如何通过会话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
你可以使用User.current_user来代替......你试过了吗? – 2012-04-26 18:06:51