authenticate_with_http_token评估为nil

时间:2014-12-10 01:41:46

标签: ruby-on-rails authentication http-token-authentication

我正在尝试创建一个非常基本的身份验证器,但不幸的是我得到了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  

1 个答案:

答案 0 :(得分:2)

好像是您的API::UsersController(或者您的ApplicationController)需求:

include ActionController::HttpAuthentication::Token::ControllerMethods