API 葡萄密钥认证
API Key Authentication for Grape
我有我的 AuthToken 模型
class APIKey < ActiveRecord::Base
before_create :generate_access_token
private
def generate_access_token
begin
self.access_token = SecureRandom.hex
end while self.class.exists?(access_token: access_token)
end
end
在我的 /controllers/api/v1/request.rb
def authenticate!
token= AuthToken.where(:access_token => params[:token])
error!('401 Unauthorized', 401) unless token
end
我正在接受这样的参数
resource :request do
post :test do
params do
requires :test_param, type: String,
requires :token, type: String
end
authenticate!
Email_id.create! # It's handled properly in the controller, There's no problem in it.
end
end
问题是我无法将该特定令牌参数解析到身份验证函数中,以便我可以签入模型,然后我可以在 API 密钥身份验证模型中对请求进行身份验证。
请帮忙。
定义您的 authenticate!
以便它接受一个参数:
def authenticate!(token)
error!('401 Unauthorized', 401) unless AuthToken.where(access_token: token).present?
end
然后像这样从控制器传入:
resource :request do
params do
requires :test_param, type: String,
requires :token, type: String
end
post :test do
authenticate!(params[:token])
end
end
我有我的 AuthToken 模型
class APIKey < ActiveRecord::Base
before_create :generate_access_token
private
def generate_access_token
begin
self.access_token = SecureRandom.hex
end while self.class.exists?(access_token: access_token)
end
end
在我的 /controllers/api/v1/request.rb
def authenticate!
token= AuthToken.where(:access_token => params[:token])
error!('401 Unauthorized', 401) unless token
end
我正在接受这样的参数
resource :request do
post :test do
params do
requires :test_param, type: String,
requires :token, type: String
end
authenticate!
Email_id.create! # It's handled properly in the controller, There's no problem in it.
end
end
问题是我无法将该特定令牌参数解析到身份验证函数中,以便我可以签入模型,然后我可以在 API 密钥身份验证模型中对请求进行身份验证。
请帮忙。
定义您的 authenticate!
以便它接受一个参数:
def authenticate!(token)
error!('401 Unauthorized', 401) unless AuthToken.where(access_token: token).present?
end
然后像这样从控制器传入:
resource :request do
params do
requires :test_param, type: String,
requires :token, type: String
end
post :test do
authenticate!(params[:token])
end
end