2016-02-25 5 views
5

私はRails 4.2アプリケーションで働いており、devise gemを認証に使用しています。Devise:ユーザーがサインアウトした後にremember_me cookieを使用するには?

remember_me機能の場合、remember_user_tokensign_outの後で破棄されるクッキーを生成します。

Deviseが破壊しないような方法がありますかremember_user_token

私はinitializer

config.expire_all_remember_me_on_sign_out = false

config以下falseしようとしたが、それは助けにはなりませんでした。

ログインフォームに入力されるように、ログアウト後にそのCookieが必要です。

助けてください。

ありがとうございました

答えて

-1

ここにはクッキーの店があります。最初に、クッキー内のすべては、設定された後、またはユーザが何らかの理由で手動でクッキーを削除するまで永久に存在します。これは、user_idとuser_group_idを設定すると、更新または削除されるまでCookie内に存在することを意味します。これは、セッションがコンピュータのRAMのようなもので、ブラウザが閉じられるとセッションが終了し、そのセッションのすべてがそのデータで終了するため、セッションとは異なります。

  1. だから、これはあなたのユーザーをログアウトするとき、あなたは彼らのクッキーは、あなたが持っていることをwan'tていない何かを空にすることを指定する必要があることを意味します。ユーザーがログインすると、ユーザーがログインしている間に必要なものを設定します。そのため、セッションとCookieは別々のものであるため、ユーザーが選択するまで相互に決して相互作用しません。だからあなたがセッションをしない限り、あなたのセッションは決してクッキーストアに自分自身をダンプしません。

  2. ユーザーがサイトにアクセスするたびに、必要に応じてCookieがデータベースと一致するように1回のハンドシェイクを行うことができます。それ以外の場合は、ログイン時に更新されるデータや、ハンドシェイクの有無にかかわらずデータが異なる可能性があります。ユーザーは、Cookieが最初に存在する目的を無効にする有効なものであることを確認するためにログインしておく必要があります。

  3. クライアント側のクッキーストレージの欠点はセキュリティ上の問題です。データを保存するためにクッキーをどのように使用するかに応じて、あなたのサイトの誰かのクッキーをハイジャックして、それらがそれらのふりをする可能性があります。これは慎重な設計で避けることができますが、あなたのクッキーストアにあるものは誰でも公正なゲームであると仮定して、慎重に、そして秘密でないデータだけを使用してください。

希望します。

1

フォームの事前入力によるカップリング認証は、必ずしも良い考えではありません。ログインに成功すると、ログインをクッキーに保存できます。 SessionsControllercreateメソッドをオーバーライドするには、superに電話してDevise::SessionsController#createに電話し、ブロックを渡します。このブロックは、ログインに成功した後に実行され、ユーザーをパラメーターとして受け取ります。

class SessionsController < Devise::SessionsController 
    def create 
    super do |user| 
     cookies[:login] = user.login 
    end 
    end 
end 
関連する問題