2017-11-03 4 views
1

Guardianを使用して認証を処理するWebアプリケーションのログインシステムを開発しています。Guardianを使用してPhoenixの機能を記憶させる

defp login(conn, user) do 
    conn 
    |> Guardian.Plug.sign_in(user) 
end 

をこのように、トークンは30日間有効で、ブラウザを閉じてもそこに留まる(期待される動作:私は私のガーディアンの設定ユーザーのトークンを呼び出すことにより、クッキーに保存されている

ttl: {30, :days} 

で クッキーの場合)。 ただし、ユーザーはログイン中に覚えているかどうかを選択できる必要があります。 ブラウザウィンドウを閉じるときに、トークンをクッキーから削除する必要があります。 私は

ttl: {0, :days} 

を設定しようとしたのだが、必要な行動を達成するようです。それは言った:

  1. ttl:{0、:days}は、ブラウザウィンドウが閉じられるまで、ユーザーを認証する適切な方法ですか?もしそうなら、Guardian.Plug.sign_in(conn、user)が呼び出される前にパイプラインのttl値をプログラムで変更する方法はありますか?
  2. Guardianは、ユーザーの選択に基づいてトークンをクッキーまたはセッション記憶域に格納できますか?選択したクッキーは私にとって覚えていますが、そうでない場合はセッションストレージです)

答えて

0

多分Guardian.Plug.remember_me/4functionをチェックしてください。 GuardianのGitHubの例があります。それは右のログイン後、あなたがトークンに基づいて要求を許可している場合ので、すべての単一のAPIルートが動作しないトークンの有効期限が切れていることを意味するので、TTLを変更

# Set a "refresh" token directly on a cookie. 
# Can be used in conjunction with `Guardian.Plug.VerifyCookie` 
conn = MyApp.Guardian.Plug.remember_me(conn, resource) 

は、ここでは非常に危険です。

Guardianはセッションを保存してトークンを保存することができるため、必要に応じて認証システムをカスタマイズする必要があります。

関連する問題