【问题标题】:How current_user works in devise railscurrent_user 如何在设计导轨中工作
【发布时间】:2016-02-01 04:28:16
【问题描述】:

我已经使用devise gem 验证我的rails 应用程序有一段时间了,我刚刚开始想知道current_user 是如何工作的

devise 如何保存 current_user?

  • 浏览器会话?
  • 申请会话?
  • 应用程序的其他部分?

我怀疑答案是第一名Browser session。原因是即使应用重新启动,并且您尝试从已用于登录的浏览器再次访问该应用,它也会自动让您登录。

我的困惑是:如果是浏览器会话,则意味着当浏览器重新启动时(会话结束)current_user 应该过期,并且用户退出;但它不起作用。

那么,current_user 是如何运作的?感谢所有贡献。

【问题讨论】:

    标签: ruby-on-rails session authentication devise


    【解决方案1】:

    如果您点击了remember_me,它会将用户唯一的签名令牌存储在永久 cookie 中,并将其存储在浏览器中。它也保存在数据库中。

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

    【讨论】:

      【解决方案2】:

      current_user 通过在应用程序会话中存储当前用户的 id 来工作。最常见的会话存储在 cookie 中。 cookie 能否在浏览器重启后存活取决于客户端的浏览器设置。

      【讨论】:

      • 那么,您是说它存储在 浏览器 会话中吗?
      • 不,应用程序会话。或者,这取决于您对这两个术语的确切含义。
      • @SunnyK:顺便说一句,我上次检查时,设计是开源的。所以很容易确切地知道它在那里做了什么。
      猜你喜欢
      • 1970-01-01
      • 2011-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多