Я пытаюсь заставить работать приложение Guardian для моего приложения. Но я полностью застрял и не могу найти поддержки для проблемы, с которой я столкнулся.
Насколько я знаю, я настроил Guardian именно так, как в документации показано, как, но когда я проверяю аутентификацию в браузере, он не работает на плагине EnsureAuthenticated, который обеспечивает Guardian.
Вот с чем я работаю:
CONFIG:
Все значения правильно заполнены в приложении.
config :statcasters, MyApp.Guardian,
allowed_algos: ["HS512"],
verify_module: Guardian.JWT,
issuer: "my_app",
ttl: {30, :days},
allowed_drift: 2000,
verify_issuer: true,
secret_key: "my_secret_key"
АУТЕНТИФИЦИРОВАННЫЙ КОНТРОЛЛЕР:
defmodule Statcasters.LeagueController do
use StatcastersWeb, :controller
alias Statcasters.{League, Repo}
plug Guardian.Plug.EnsureAuthenticated
def create(conn, %{"league" => league_params}) do
changeset = League.changeset(%League{}, league_params)
case Repo.insert(changeset) do
{:ok, league} ->
conn
|> put_status(:created)
|> render("league.json", league: league)
{:error, changeset} ->
conn
|> put_status(:unprocessable_entity)
|> render(Statcasters.ChangesetView, "error.json", changeset: changeset)
end
end
end
В этом контроллере происходит сбой. Когда он подходит к разъему EnsureAuthenticated, он тут же останавливается. но у меня есть действительный JWT в заголовках на данный момент.
Вот наши мои параметры:
Parameters: %{"headers" => %{"Authorization" => "Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJTdGF0Y2FzdGVycyIsImV4cCI6MTUyNzUzMDA1OSwiaWF0IjoxNTI0OTM4MDU5LCJMiOiJTdGF0Y2FzdGVycyIsImp0aSI6IjJhNDg3MWQ4LTkwZGEtNDNlYS1hMGJlLWVjNjgwNjIzOTBkOCIsIm5iZiI6MTUyNDkzODA1OCwic3ViIjoiMSIsInR5cCI6InJlZnJlc2gifQ.EKeaHoQiW9tmtsabPIjj6069zD6Vcex9w3xfkXP5MIyiogWh400S6wMzaAsTQd20I5ai_y9jJTtgLzqYfbGTaQ"}
Я подтвердил, что JWT действителен здесь .
ЗАПРОС:
axios.post('/api/v1/leagues', {
league: {
name: this.$refs.league_name.value,
player_limit: this.$refs.player_limit.value,
},
headers: {
Authorization: "Bearer jwt(correct jwt)"
}
}).then(response => {
}).catch(error => {
})
Опять же, проблема в том, что мой аутентификатор не работает в Plug.EnsureAuthenticated
ловушке. Но я не могу понять почему, потому что я, кажется, все настраиваю правильно, а JWT находится в заголовке аутентификации. Любая помощь с этим будет принята с благодарностью! Я застрял здесь довольно давно. Спасибо