我是设计的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?请帮忙。
答案 0 :(得分:1)
如果请求标头中没有传递令牌,您将最终执行
User.find_by(authorization_token: nil)
这将返回authorization_token列为null的用户(如果有),因此您需要检查标头是否存在。
您可能对devise-token_authenticatable
gem感兴趣,它为设计实现了基于令牌的身份验证策略(从早期版本的设计中提取)