如果没有给出任何值,则Rails4 API @current_user被赋值为1

时间:2015-06-10 17:45:47

标签: ruby-on-rails devise

我是设计的Rails 4。我有一个基本控制器

class Api::BaseController < ApplicationController
  respond_to :json
  before_action :current_user

 def current_user
   @current_user ||= User.find_by(authentication_token: request.headers['Authorization'])
 end

end

`每当我发送带有授权标头的请求时,@ current_user都会获得正确的用户ID,但是当我不发送授权令牌时,@ current_user正在占用1.为什么它被分配1?请帮忙。

1 个答案:

答案 0 :(得分:1)

如果请求标头中没有传递令牌,您将最终执行

User.find_by(authorization_token: nil)

这将返回authorization_token列为null的用户(如果有),因此您需要检查标头是否存在。

您可能对devise-token_authenticatable gem感兴趣,它为设计实现了基于令牌的身份验证策略(从早期版本的设计中提取)