Я могу успешно сгенерировать токен, когда я нажму на свой контроллер user_token. Затем он отправляет его моему клиенту, который я могу проверить на вкладке Приложения консоли Chrome. Но когда я пытаюсь сделать аутентифицированный запрос, я получаю:
Filter chain halted as :authenticate_user rendered or redirected
Я могу убедиться, что заголовок авторизации отправляется вместе с запросом (в качестве значения он имеет ключ Bearer и JWT), поэтому кажется, что Knock не нравится созданный мной токен. Создание токена не упоминается в документации Knock. Я использовал документацию по драгоценным камням JWT, чтобы узнать, как это сделать, но я думаю, что я что-то упустил. Был бы признателен, если бы кто-нибудь мог взглянуть. Вот как я его создаю:
# controllers/user_token_controller.rb
class UserTokenController < Knock::AuthTokenController
def create
user = User.find_by_email(user_token_params[:email])
if user&.authenticate(user_token_params[:password])
token = JWT.encode(user_token_params, ENV["SECRET_KEY_BASE"], "HS256")
render json: {token: token}
else
render json: {error: "invalid email or password."}
end
end
private
def user_token_params
params.require(:auth).permit(:email, :password)
end
end