Laravel:使用“记住我”选项登录和不使用有什么区别?

5
我对登录表单下面的默认Laravel“记住我”选项有一个问题。 我使用默认内置的LoginController。当我查看Laravel文档时,阅读到了关于“记住我”的信息:

“这个选项将使用户保持身份验证状态,直到他们手动退出或清空缓存”。

好的。现在我进行一个测试:

  • 我取消“记住我”复选框,并登录。然后我关闭浏览器。我重新打开浏览器并访问我的应用程序:我仍然已登录。
  • 然后我选择“记住我”复选框,登录,关闭浏览器,再次打开浏览器:完全相同的结果:我仍然已登录...

这是怎么可能的?有什么区别吗?

1个回答

6
如果您使用“记住我”功能,Laravel 会将包含令牌的 cookie 放置在您下次访问页面时用于登录(如果您以某种方式注销,稍后我将解释)。
默认情况下,Laravel 使用有效期为 2 小时的会话(您可以在配置中设置),因此如果您在登录的情况下关闭浏览器,然后在 2 小时内尝试再次打开 相同 浏览器,服务器将不会注意到更改。
“某种方式注销”
  • 显然是通过应用程序中的注销按钮
  • 通过浏览器本身或第三方程序清除浏览器缓存
  • 使用不同的浏览器(这只是为了澄清)
  • 使用无痕模式(这只是为了澄清)
  • 在没有同步功能的不同计算机和浏览器上使用(这是为了澄清)

回答您的问题“有什么区别?”:
如果您使用“记住我”功能,Laravel 将设置包含令牌的 cookie,该令牌在登录时代替凭据(名称:密码组合),并且该过程对用户来说是不可见的。
如果您不使用“记住我”功能,则只能在 2 小时(或配置文件中设置的时间)内保持登录状态,而不需要任何操作。浏览器即使在关闭后仍然保留会话信息也被认为是浏览器的功能。

所以基本上,如果我们想将这种逻辑应用到其他语言中,我们会发现,没有“记住我”的情况下,令牌只在短时间内有效,而有“记住我”的情况下,令牌则可以长时间保持有效(例如两天或一周)? - Rationalist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接