我希望能够自定义:authenticate_user过滤器,以包括通过身份验证令牌对用户进行身份验证。我不想使用内置令牌机制的原因是因为它只允许一个auth-token。我希望用户拥有多个令牌。据我所知,设计并不支持这一点。
有什么想法吗?
答案 0 :(得分:0)
我已经添加了一个自己的策略来解决这个问题:
Warden::Strategies.add(:tokens_authenticatable) do
def valid?
# code here to check whether to try and authenticate using this strategy;
return params.key? :token
end
def authenticate!
# code here for doing authentication;
puts params
token = Token.where(["token = ?", params[:token]]).first
puts token
if (!token.nil?)
# if successful, call
success!(token.user) # where resource is the whatever you've authenticated, e.g. user;
else
# if fail, call
fail!("WWAAAAA") # where message is the failure message
end
end
end
config.warden do |manager|
# manager.intercept_401 = false
manager.default_strategies(:scope => :user).unshift :tokens_authenticatable
end