2016-04-18 28 views
0

我使用的是衛報鳳應用程序,但我不能使用控制器put_session和get_session方法與守護護法,在鳳凰城的應用程序會話

defmodule Bonsai.LedgerController do 
use Bonsai.Web, :controller 

alias Bonsai.{Repo, Ledger} 

plug Guardian.Plug.EnsureAuthenticated, handler: Bonsai.SessionController 
plug :scrub_params, "ledger" when action in [:create] 

def index(conn, _params) do 
    put_session(conn, :sess_val, "A value") # Generates error 
    ledgers = Repo.all(Ledger) 

    render(conn, "index.json", ledgers: ledgers) 
end 

+0

什麼是錯誤? – Gazler

+0

試圖康恩= put_session(康涅狄格州,:my_key, 「A值」)時 [錯誤] #PID <0.638.0>運行Bonsai.Endpoint終止 服務器:localhost:4000(HTTP) 請求:GET/API/V1 /橫木 * *(退出)出現異常: **(ArgumentError)會話未獲取,請調用fetch_session/2 –

+0

您在Router管道中是否有'plug:fetch_session'? – Gazler

回答

3

有兩個問題在這裏。

首先,您需要在管道中獲取會話。這是在你的路由器常見的做:

pipeline :browser do 
    #... 
    plug :fetch_session 
    #... 
end 

的第二個問題是,您所呼叫put_session但是沒有被使用的結果。試試這個:

def index(conn, _params) do 
    conn = put_session(conn, :sess_val, "A value") 
    ledgers = Repo.all(Ledger) 

    render(conn, "index.json", ledgers: ledgers) 
end 
+0

非常感謝修復,我確實遇到了問題編輯器,現在我使用vimi,但是當使用atom時,我必須重新啓動服務器才能使更改生效。 –