繁体   English   中英

Rails,设计:如何通过令牌认证替换以前的登录

[英]Rails, devise: how to replace previous login via token authentication

我使用带有模块TokenAuthentication设计

当我未经身份验证时,我可以使用?auth_token = part跟随链接。 像这样:

我关注链接: /orders?auth_token=q2a8w6virARzv6B2C1vR其中q2a8w6virARzv6B2C1vRuser1的 authentication_token。 现在我以user1身份登录。

但是,当我通过电子邮件\\密码和公共sign_in页面以某个用户身份登录,然后使用另一个用户令牌跟随auth_token这样的链接时,我意外地保持以第一个用户身份登录。

像这样:

  1. 我通过登录页面登录。 我填写user2的电子邮件和密码。 现在我以user2身份登录
  2. 我关注链接: /orders?auth_token=q2a8w6virARzv6B2C1vR其中q2a8w6virARzv6B2C1vRuser1的 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM