Guardian.Plug.UnauthenticatedError
tamtran-agilityio opened this issue · 4 comments
`case Auth.authenticate(email, password) do
{:ok, user} ->
new_conn = Guardian.Plug.sign_in(conn, user)
jwt = Guardian.Plug.current_token(new_conn)
new_conn
|> put_status(:created)
|> render("show.json", user: user, jwt: jwt)
:error ->
conn
|> put_status(:unauthorized)
|> render("error.json", error: "User or email invalid")
end`
Have error:
** (exit) an exception was raised: web_1 | ** (Guardian.Plug.UnauthenticatedError) {:error, :secret_not_found} web_1 | (guardian) lib/guardian/plug.ex:380: Guardian.Plug.handle_unauthenticated/3
This is my config
# in each environment config file you should overwrite this if it's external config :guardian, Nailer.Guardian, allowed_algos: ["HS512", "RS256"], # optional ttl: {30, :days}, allowed_drift: 2000, secret_key: "H6UqD/bw0LvwzNxtX4FZibQi8WnHrX3mdG/cDl8xlWFPC2tPZnOc+N5FGJYuBgSe", issuer: "nailer"
You can help me, thanks!
{:error, :secret_not_found}
<---
Are you sure you are using the correct Guardian module?
@yordis This is file using
defmodule Nailer.Guardian do
use Guardian, otp_app: :nailer
import Plug.Conn
alias Nailer.Accounts
def subject_for_token(user, _claims) do
{:ok, to_string(user.id)}
end
def resource_from_claims(%{"sub" => id}) do
case Accounts.get_user(id) do
nil -> {:error, :resource_not_found}
user -> {:ok, user}
end
end
end
defmodule Nailer.Guardian.ErrorHandler do
import Plug.Conn
@behaviour Guardian.Plug.ErrorHandler
@impl Guardian.Plug.ErrorHandler
def auth_error(conn, {type, reason}, _opts) do
body = Jason.encode!(%{message: to_string(type)})
send_resp(conn, 401, body)
end
end
I have update secret_key
. It working now, thanks all!