我在凤凰应用程序上使用Guardian但我不能在带有Guardian的控制器中使用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 :(得分:4)
这里有两个问题。
首先,您需要在管道中获取会话。这通常在您的路由器中完成:
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