2017-01-13 16 views
1

を削除されません。私はプラグ私のにブラウザのパイプラインのセッションで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の存在を示しています。

私は、私が行方不明ですかわからないですが、私はセッションクッキーは、ログアウト機能やルータを介して、次のページのロード用に作成された新しいものの後に破壊されることを期待していますし、ブラウザのパイプライン

感謝事前

+0

'IO.puts'を使って' user_id'を表示していると、私はあなたが現在のものではなく次のリクエストでそれをチェックする必要があると思います –

+0

ありがとうDavid、私はPlugセッションuser_id(ブラウザのパイプラインにあります)がチェックされ、リダイレクトページのロードに存在します – abarr

答えて

4

logout機能は、その中にエラーが発生しました。それは次のようになります。あなたが書いたlogout機能で

def logout(conn, _params) do 
    configure_session(conn, drop: true) 
    |> redirect(to: authentication_path(conn, :index)) 
end 

、あなたがconfigure_sessionを呼んでいたが、その後、あなたが戻り値を使用していなかったので、セッションをドロップするように指示がredirectコールに渡されませんでした。

+0

Davidに感謝します。 – abarr

関連する問題

 関連する問題