Guardian.Plug.current_resource (conn) возвращает ноль - PullRequest
0 голосов
/ 07 мая 2018

Я обновляю Guardian с v0.14 до v1.0.

Я слежу за обновлением с официальной страницы github хранителя и столкнулся с одной проблемой.

Для обновления я немного изменил логику аутентификации.

От:

case Myapp.Session.authenticate(session_params) do
  {:ok, user} ->
    {:ok, jwt, _full_claims} = user |> Guardian.encode_and_sign(:token)

    conn
    |> put_status(:created)
    |> render("show.json", jwt: jwt, user: user)

  :error ->
    conn
    |> put_status(:unprocessable_entity)
    |> render("error.json")
end

Кому:

case Myapp.Session.authenticate(session_params) do
  {:ok, user} ->
    {:ok, jwt, _full_claims} = Core.Guardian.encode_and_sign(user)

    conn
    |> put_status(:created)
    |> render("show.json", jwt: jwt, user: user)

  :error ->
    conn
    |> put_status(:unprocessable_entity)
    |> render("error.json")
end

И я получил nil от Guardian.Plug.current_resource(conn) ..., чтобы решить эту проблему, я храню token во внешнем интерфейсе localStorage и передаю его, чтобы получить информацию о пользователе.

Но я все еще думаю, что лучше получать информацию о пользователях от current_resource. Как мне этого добиться?

- РЕДАКТИРОВАТЬ current_user_controller.ex

def show(conn, _) do
 user = Myapp.Guardian.Plug.current_resource(conn)

 conn
 |> put_status(:ok)
 |> render("show.json", user: user)
end
...