我使用模块TokenAuthentication
当我未经身份验证时,我可以使用?auth_token = part跟随链接。像这样:
我关注了链接:/orders?auth_token=q2a8w6virARzv6B2C1vR
其中q2a8w6virARzv6B2C1vR
是 user1 的authentication_token。现在我以 user1 身份登录。
但是,当我通过电子邮件\密码和公共sign_in页面以某个用户身份登录,然后使用另一个用户令牌跟随auth_token这样的链接时,我意外地保持以第一个用户身份登录。
像这样:
/orders?auth_token=q2a8w6virARzv6B2C1vR
q2a8w6virARzv6B2C1vR
的位置
authentication_token为 user1 。和我
仍然以 user2 而不是
预期 user1 。是虫子吗?更改此行为以强制通过令牌替换身份验证的最佳做法是什么?
Rails 3.0.6
设计1.2.1
答案 0 :(得分:2)
您取消注释:您的用户模型中的token_authenticatable,对吗?
答案 1 :(得分:2)
让我们做一些神秘的问题......
在运行stragegies之前(token_authenticatable,database_authenticatable)Warden首先检查用户是否已在当前会话中设置。
操作响应/订单查询是否应该仅使用 令牌身份验证?如果是这样,您可以添加:before_filter: reset_session
(在authorize_user
之前),以便Warden无法从会话中反序列化用户并被迫执行身份验证。
[编辑] 此问题故障单包含合理的解决方案:https://github.com/plataformatec/devise/issues/1644