如何在 Rails 中正确设置令牌认证?
How to set up Token Authentication properly in Rails?
我正在尝试为一个项目制作 API。我遵循了该视频中的说明 - https://www.youtube.com/watch?v=lgdUqtw4weg&t=165s
基本上在视频中,我为用户模型制作了一个标记列。并设置控制器,以便我可以使用 post 方法。
但是当我运行的时候POST。
我收到错误提示
{"error":"You need to sign in or sign up before continuing."}
我认为 Devise 正在干扰 POST 并发现用户在尝试访问非 public 页面时未登录。
我如何克服这个问题并获得令牌?
这是我的 api 控制器。
class Api::V1::UserSerializedController < ApplicationController
protect_from_forgery except: :index
respond_to :json
def create
user = User.where(email: params[:email]).first
if user.valid_password?(params[:encrypted_password])
render json: user.as_json(only: [:email, :authentication_token]),status: :created
else
head(:unauthorized)
end
end
def show
end
end
您正在继承 ApplicationController
,我猜您有 authenticate_user!
之前设置的操作。
您必须将父 class 更改为 ApiController
之类的东西(我更喜欢这个)
或
为您的 Api::V1::UserSerializedController
跳过此操作
我正在尝试为一个项目制作 API。我遵循了该视频中的说明 - https://www.youtube.com/watch?v=lgdUqtw4weg&t=165s
基本上在视频中,我为用户模型制作了一个标记列。并设置控制器,以便我可以使用 post 方法。 但是当我运行的时候POST。 我收到错误提示
{"error":"You need to sign in or sign up before continuing."}
我认为 Devise 正在干扰 POST 并发现用户在尝试访问非 public 页面时未登录。
我如何克服这个问题并获得令牌?
这是我的 api 控制器。
class Api::V1::UserSerializedController < ApplicationController
protect_from_forgery except: :index
respond_to :json
def create
user = User.where(email: params[:email]).first
if user.valid_password?(params[:encrypted_password])
render json: user.as_json(only: [:email, :authentication_token]),status: :created
else
head(:unauthorized)
end
end
def show
end
end
您正在继承 ApplicationController
,我猜您有 authenticate_user!
之前设置的操作。
您必须将父 class 更改为 ApiController
之类的东西(我更喜欢这个)
或
为您的 Api::V1::UserSerializedController