Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 当前用户在Desive rails中的工作方式_Ruby On Rails_Session_Authentication_Devise - Fatal编程技术网

Ruby on rails 当前用户在Desive rails中的工作方式

Ruby on rails 当前用户在Desive rails中的工作方式,ruby-on-rails,session,authentication,devise,Ruby On Rails,Session,Authentication,Devise,我已经使用了一段时间来验证我的rails应用程序,我开始想知道当前用户是如何工作的 如何保存当前用户 浏览器会话 应用程序会话 应用程序的其他部分 我怀疑答案是第一个浏览器会话。原因是,即使应用程序重新启动,并且您尝试从已用于登录的浏览器再次访问该应用程序,它也会自动为您登录 我的困惑是:如果是浏览器会话,这意味着当浏览器重新启动(会话结束)时,当前用户应该过期,用户注销;但事实并非如此 那么,当前用户如何操作?感谢所有贡献。当前用户通过在应用程序会话中存储当前用户的id来工作。最常见的会话

我已经使用了一段时间来验证我的rails应用程序,我开始想知道当前用户是如何工作的

如何保存当前用户

  • 浏览器会话
  • 应用程序会话
  • 应用程序的其他部分
我怀疑答案是第一个
浏览器会话
。原因是,即使应用程序重新启动,并且您尝试从已用于登录的浏览器再次访问该应用程序,它也会自动为您登录

我的困惑是:如果是浏览器会话,这意味着当浏览器重新启动(会话结束)时,
当前用户
应该过期,用户注销;但事实并非如此


那么,
当前用户如何操作?感谢所有贡献。

当前用户通过在应用程序会话中存储当前用户的id来工作。最常见的会话存储在cookie中。cookie是否在浏览器重新启动后仍然有效取决于客户端的浏览器设置。

如果您单击了
记住我
,它会将用户独有的签名令牌存储在永久cookie中,并将其存储在浏览器中。它也保存在数据库中


当再次调用当前用户时,rails检查永久cookie是否存在,如果存在,则将其与数据库中的cookie进行比较。如果它们相同,则表示您作为该用户登录。

那么,您是说它存储在浏览器会话中吗?不,是应用程序会话。或者这取决于这两个术语的确切含义。@SunnyK:顺便说一句,上次我检查时,designe是开源的。所以很容易知道它到底在那里做什么。