簡體   English   中英

Rails設計,通過session_store鍵找到current_user

[英]Rails devise, find current_user by session_store key

我們在Rails上運行了一個生產系統(主應用程序),並配置了devise gem(使用Redis會話存儲)(為所有子域啟用了會話)

我需要為我們的基於子域的微服務之一構建自定義身份驗證服務。 對於每個請求,此微服務將使用會話ID(rails會話存儲密鑰的cookie值)(在config / initializers / session_store.rb中配置)調用我們的主應用。

所以問題是,我可以僅通過會話ID找到用戶嗎? (使用設計或管理員)

您可以使用Devise的Authenticateable模塊添加到資源中的方法來實現這一目的,該方法稱為serialize_from_session 您可以傳入一個擴展的Warden會話變量,該變量同時包含密鑰和鹽( serialize_from_session接受這兩個參數)。 例如,如果您在用戶模型上使用Devise:

user = User.serialize_from_array(*session['warden.user.user.key'])

session['warden.user.user.key']變量是記錄ID的數組(作為數組)和鹽。 看起來像[[1], "$2f$23$2DIUF7Vr.J5sbfGwHTew"]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM