我怎样才能找到有一项用户通过它的会话ID?(How can I find a devise user

2019-06-24 00:07发布

鉴于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?