簡體   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