ユーザー認証にDeviseとOmniauthを使用しています。
認証後2週間はサインインしたままにしてほしい。ただし、ユーザーがブラウザウィンドウを閉じて再度開くと、ログイン画面が再び表示されます。
ブラウザを閉じて再度開いた後もユーザーが接続を維持するための正しい構成は何ですか?
ユーザー認証にDeviseとOmniauthを使用しています。
認証後2週間はサインインしたままにしてほしい。ただし、ユーザーがブラウザウィンドウを閉じて再度開くと、ログイン画面が再び表示されます。
ブラウザを閉じて再度開いた後もユーザーが接続を維持するための正しい構成は何ですか?
Deviseのwikiでこのページをチェックしてください:
https://github.com/plataformatec/devise/wiki/Omniauthable,-sign-out-action-and-rememberable
基本的に、Omniauthを使用する場合、Deviseはデフォルトでrememberableを呼び出しません。そうしたい場合はremember_me(@user)
、omniauthコールバックを呼び出すだけで、Deviseがハードワークを行います。また、デバイス初期化子で設定されたすべての構成オプションを使用します。
ログインおよびログアウト時にCookieを追加するには、デバイスのSessionsControllerを拡張する必要があるため、コントローラーは次のようになります。
class SessionsController < Devise::SessionsController
# POST /resource/sign_in
def create
cookies[:sign_in] = "Sign in info you want to store"
# add this for expiration { :expires => 2.weeks.from_now }
super
end
# GET /resource/sign_out
def destroy
cookies[:sign_out] = "Sign out info you want to store"
super
end
end
次に、routes.rbに以下を追加する必要があります。
devise_for :users, :controllers => { :sessions => "sessions" }
Cookieの有効期限を2週間に設定することもできます。