を削除されません。私はプラグ私のにブラウザのパイプラインのセッションでuser_idをチェックしています。それは私がオンラインでCONNへユーザー追加存在している場合:私のログイン機能でフェニックスセッションは、私が<em>フェニックスエリクサー</em>アプリの認証を書いてい
router.ex
pipeline :browser do
plug :accepts, ["html"]
plug :fetch_session
plug :fetch_flash
plug :protect_from_forgery
plug :put_secure_browser_headers
plug AccountMgr.Plugs.CheckSessionForUser
end
check_for_user_on_session.ex
def call(conn, _opts) do
user_id = get_session(conn, :user_id)
cond do
user = user_id && Repo.get(User, user_id) ->
assign(conn, :current_user, user)
true ->
assign(conn, :current_user, nil)
end
end
を私はセッションにUSER_IDを追加します資格情報が正しい場合:
cond do
user && checkpw(password, user.password_hash) ->
conn
|> assign(:user, user)
|> put_session(:user_id, user.id)
|> configure_session(renew: true)
|> redirect(to: portfolio_path(conn, :index))
user ->
{:error, :unauthorised, conn}
true ->
dummy_checkpw()
{:error, :not_found, conn}
end
私のログアウト機能では、私はconfigure_session (conn, drop: true)
を呼び出しています。
def logout(conn, _params) do
configure_session(conn, drop: true)
redirect(conn, to: authentication_path(conn, :index))
end
私はconfigure_session
関数を呼び出すとuser_id
がまだ存在する前と後のセッションでuser_id
を表示するIO.puts
を使用しています。
私はまた、プラグ check_for_user_on_session.ex でUSER_IDをロギングしていますし、それはログアウト機能からリダイレクト後に呼び出されたとき、それはまた、user_idの存在を示しています。
私は、私が行方不明ですかわからないですが、私はセッションクッキーは、ログアウト機能やルータを介して、次のページのロード用に作成された新しいものの後に破壊されることを期待していますし、ブラウザのパイプライン
感謝事前
'IO.puts'を使って' user_id'を表示していると、私はあなたが現在のものではなく次のリクエストでそれをチェックする必要があると思います –
ありがとうDavid、私はPlugセッションuser_id(ブラウザのパイプラインにあります)がチェックされ、リダイレクトページのロードに存在します – abarr