ブラウザを再起動してもセッションが継続するように、クッキーを実装する最も簡単な方法は何ですか?最も簡単な方法は、ブラウザを再起動しても、セッションを継続することです。
4
A
答えて
5
でクッキーのマニュアルを参照してください。セッションのクッキーはブラウザの再起動の間に持続しないので、アプリケーションにユーザーが誰であるかを示す他の種類のクッキーを使用する必要があります。最も一般的には、私の機能を覚えておくことは、ユーザーがアプリケーションに覚えてほしいと選択させることによって実現されます。その場合、そのユーザーのパスワードとして機能するCookieを作成する必要があります。通常、次の操作を実行します。
- ユーザーがアクセスまたは表示できない属性を選択します。たとえば、自分のアカウントが作成されたとき、またはランダムに生成された文字列を格納するときなどです。
- この属性をハッシュして、Cookie値を認識できないようにします。ここで
例です。
identifier = current_user.id
value = Digest::SHA1.hexdigest(current_user.created_at)[6,10]
cookies['remember_me_id'] = {:value => identifier, :expires => 30.days.from_now}
cookies['remember_me_key'] = {:value => value, :expires => 30.days.from_now}
は最後に、ユーザーがログインしている場合は、チェックしているとき、あなたは彼らが同様に覚えてクッキーを使用してログインしているかどうかを確認する必要があります。例:
def current_user
current_user ||= login_from_session || login_from_cookie
end
def login_from_session
current_user = User.find(session[:id]) unless session[:id].nil?
end
def login_from_cookie
user = User.find(cookies['remember_me_id'])
if cookies['remember_me_key'] == Digest::SHA1.hexdigest(user.created_at)[6,10]
current_user = user
else
nil
end
end
これにより、ブラウザを再起動しなくてもCookieを実装できるようになります。
4
あなたのクッキーが永遠に続くようにしたい場合は、あなたが行うことができます:
cookies.permanent[:foo] = "bar"
は行うための最善のことは私に覚えているクッキーと呼ばれるものを使用することであるhttp://api.rubyonrails.org/classes/ActionDispatch/Cookies.html
1
http://railscasts.com/episodes/274-remember-me-reset-password?view=comments
Here'sくれライアンベイツによってクッキーを覚えているに大きなスクリーンキャスト!
関連する問題
- 1. StackOverflowErrorでJVMを自動再起動する最も簡単な方法
- 2. ブラウザを再起動してもセッションが終了する
- 3. node/jsアプリケーションを起動する最も簡単な方法は何ですか?
- 4. Hibernateセッションを使用する最も簡単な方法
- 5. Grails:GORMでhashmapを永続化する最も簡単な方法
- 6. 最も簡単な方法
- 7. 最も簡単な方法
- 8. Javaでメモリリークを引き起こす最も簡単な方法は?
- 9. アイコン付きのアンドロイドでウェブページを起動する最も簡単な方法
- 10. Dockerコンテナをローカルホストに接続する最も簡単な方法
- 11. WPFで標準コントロールを継承する最も簡単な方法は?
- 12. 作成と最も簡単な方法
- 13. ブラウザでGoogleのURLをスクレイプする最も簡単な方法は?
- 14. WindowsマシンからSSHセッションと対話する最も簡単な方法は?
- 15. 最も簡単な方法は、プログラム
- 16. 最も簡単な方法は、垂直
- 17. 最も簡単な方法は、Express
- 18. 最も簡単な方法は、
- 19. この最も簡単な例では、コンボボックスをカスケード接続
- 20. dockerfileでファイルとディレクトリをコピーする最も簡単な方法
- 21. 最も簡単な一連のjavascript/jQueryイベントの最新のものを守る最も簡単な方法
- 22. 再帰呼び出しを追跡する最も簡単な方法は?
- 23. Linux上でC++/Qtのスレッドを起動して忘れる最も簡単な方法は何ですか?
- 24. ASP.net 4.0でWebkitブラウザを検出する最も簡単な方法
- 25. 双方向再帰関係を削除する最も簡単な方法は?
- 26. PHPで日付をインクリメントする最も簡単な方法は?
- 27. Javaでデータベースメタデータを取得する最も簡単な方法は?
- 28. DesignModeでコレクションを編集する最も簡単な方法は?
- 29. C++でスレッドプールを作成する最も簡単な方法は?
- 30. 最も簡単な方法は、javaでhttpリクエストを行うことです
レール認証フレームワーク(Deviseなど)の中には、この機能のサポートが組み込まれている点があります。これらを最初から構築するのではなく、真剣に検討する価値があります。 –