Я обновляю 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