鑑於session["session_id"]
是否有可能找到會話所屬的登錄User
?如何通過會話ID找到設計用戶?
回答
至少在我的系統(導軌3.2,設計2.0.4),你可以做這樣的:
session
是:
{"session_id"=>"be02f27d504672bab3408a0ccf5c1db5", "_csrf_token"=>"DKaCNX3/DMloaCHbVSNq33NJjYIg51X0z/p2T1VRzfY=", "warden.user.user.key"=>["User", [3], "$2a$10$5HFWNuz5p6fT3Z4ZvJfQq."]}
session["warden.user.user.key"][1][0]
,然後是3
。
所以,我覺得爲:
User.find(session["warden.user.user.key"][1][0])
On Rails 4.2.1,Devise 3.4.1你會想使用User.find(session [「warden.user.user.key」] [0] [0]) – 2015-04-06 05:02:36
謝謝。這個例子很難看,但它工作。再次感謝。這個餅乾的例子:http://stackoverflow.com/a/43549108/5754223 – artamonovdev 2017-04-21 17:51:37
我不知道你想什麼來完成,但會盡量回答
如果只想從當前會話的用戶,一個簡單的辦法是給他的ID存儲在會話,例如:
def login(username, pass)
# do the usual authentication stuff and get user
if logedin
session[:user_id] = user.id
end
end
然後獲取當前用戶會是這樣的
current_user =User.find(session[:user_id])
如果你要的是找出所有當前登錄的用戶是什麼,我想你需要配置你的應用程序在數據庫保存會話,因爲預定義的是,會話數據被存儲在Cookie中的瀏覽器。有關此更多信息,請這個答案 How to track online users in Rails?
編輯:只要您使用設計發現,所以第一種方式實際上是在你身邊。你只需要在任何控制器上調用current_user
方法。 對於第二種方式檢查這個答案"Who's Online" using Devise in Rails
- 1. 通過設計破壞會話「無法找到用戶'id'= sign_out」
- 2. 會話ID如何找到當前用戶ID
- 3. CodeIgniter通過ID或用戶ID得到會話
- 4. 如何通過user_id找到設計用戶?
- 5. 設計:找不到用戶ID
- 6. 如何通知用戶會話過期
- 7. 如何通過jQuery訪問會話ID
- 8. 如何通過會話獲取ID
- 9. 設計rails會話ID
- 10. iOS用戶登錄會話通過設計但Auth_token不保留
- 11. 設計:如何使一個用戶的所有會話過期?
- 12. 通過ID檢索會話
- 13. 通過ID獲得會話
- 14. 如何通過用戶名斷言記錄的用戶會話ID?
- 15. 如何確保通過並設置會話ID?
- 16. 從會話中查找用戶ID
- 17. 會話用戶ID?
- 18. 使用Socket.IO,我如何找出斷開用戶的會話ID?
- 19. 基於會話ID識別/管理用戶(會話ID到用戶ID到用戶數據的映射)
- 20. 設計得到用戶通過reset_password_token
- 21. 使用用戶的會話ID號找到用逗號
- 22. Rails的設計通過認證令牌找到用戶
- 23. 如何從會話ID中查找用戶名?
- 24. 如何檢查用戶何時通過會話過期退出
- 25. 我如何查詢使用C#通過API給定會話ID的用戶名?
- 26. WordPress的:通過用戶ID與令牌/驗證會話
- 27. 通過javax攔截器記錄用戶的會話ID
- 28. 打印設計用戶會話?
- 29. 爲多個用戶設計會話
- 30. 如何取消設置會話ID以註銷用戶?
你可以使用User.current_user來代替......你試過了嗎? – 2012-04-26 18:06:51