[英]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.