我正在尝试创建一个非常基本的身份验证器,但不幸的是我得到了nil作为回报导致我的路由到401未经授权。
[20] pry(#<API::UsersController>)>
ActionController::HttpAuthentication::Token::ControllerMethods.authenticate_with_http_token
NoMethodError: undefined method `authenticate_with_http_token' for
ActionController::HttpAuthentication::Token::ControllerMethods:Module
[22] pry(#<API::UsersController>)> cd
ActionController::HttpAuthentication::Token::ControllerMethods
[23] pry(#<Module>):1> ls
ActionController::HttpAuthentication::Token::ControllerMethods#methods:
authenticate_or_request_with_http_token authenticate_with_http_token
request_http_token_authentication
locals: _ __ _dir_ _ex_ _file_ _in_ _out_ _pry_
[24] pry(#<Module>):1>
代码:
protected
def authenticate
authenticate_token || render_unauthorized
end
def authenticate_token
binding.pry
authenticate_with_http_token do |token, options|
User.find_by(auth_token: token)
end
end
def render_unauthorized
self.headers['WWW-Authenticate'] = 'Token realm="Application"'
render json: 'Bad credentials', status: 401
end
答案 0 :(得分:2)
好像是您的API::UsersController
(或者您的ApplicationController
)需求:
include ActionController::HttpAuthentication::Token::ControllerMethods