[英]Rails, devise: how to replace previous login via token authentication
我使用带有模块TokenAuthentication
设计
当我未经身份验证时,我可以使用?auth_token = part跟随链接。 像这样:
我关注链接: /orders?auth_token=q2a8w6virARzv6B2C1vR
其中q2a8w6virARzv6B2C1vR
是user1的 authentication_token。 现在我以user1身份登录。
但是,当我通过电子邮件\\密码和公共sign_in页面以某个用户身份登录,然后使用另一个用户令牌跟随auth_token这样的链接时,我意外地保持以第一个用户身份登录。
像这样:
/orders?auth_token=q2a8w6virARzv6B2C1vR
其中q2a8w6virARzv6B2C1vR
是user1的 authentication_token。 我仍然以user2而不是预期的user1身份登录。 是bug吗? 更改此行为以强制通过令牌替换身份验证的最佳做法是什么?
Rails 3.0.6
设计1.2.1
让我们来做一些神秘的问题......
在运行stragegies(token_authenticatable,database_authenticatable)之前,Warden首先检查用户是否已在当前会话中设置。
发生在: https : //github.com/hassox/warden/blob/3d653371a2ff594d9965c1dde642c98cd8485e15/lib/warden/proxy.rb#L212
动作响应/订单查询是否应该只使用令牌身份验证? 如果是这样,您可以添加: before_filter: reset_session
(在authorize_user
之前),以便Warden无法从会话中反序列化用户并被迫执行身份验证。
[编辑]本期票包含合理的解决方案: https : //github.com/plataformatec/devise/issues/1644
你没有注释:你的用户模型中的token_authenticatable,对吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.