鉴于session["session_id"]
是有可能找到登录的User
到该会话属于?
Answer 1:
至少在我的系统(导轨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])
Answer 2:
我不知道你想什么来完成,但会尽量回答
如果你想只从当前会话的用户,一个简单的办法是给他的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存储。 对于这张支票上这个答案更多信息如何跟踪Rails的在线用户?
编辑:只注意到您使用的设计,因此第一种方法实际上是在你身边。 你只需要调用current_user
在任何控制器的方法。 对于第二种方式检查这个回答“谁在线” Rails中使用设计
文章来源: How can I find a devise user by it's session id?