【问题标题】:How remember me is working on Laravel and Yii2?还记得我在 Laravel 和 Yii2 上工作吗?
【发布时间】:2017-04-28 12:53:12
【问题描述】:

我安装了两个不同的 PHP 框架 Laravel 5.3Yii2 advanced。两个框架都提供开箱即用的身份验证。

在登录页面上都有Remember me复选框。

在 Laravel 中,我发现 users 表上有一个 remember_token 字段,据我了解,该字段用于记住我的功能。

但是Yii2的用户表上没有这个额外的字段。

所以,我猜两者都提供相同的功能,但工作方式不同。所以我想知道该功能在这两个框架上是如何工作的?

任何帮助将不胜感激。

注意:我问这个是因为我有一个使用 Yii2 构建的系统,现在我将使用 Laravel 构建一个新系统。新的 Laravel 系统将使用与 Yii2 相同的 user 表。意味着用户可以使用相同的凭据登录到两个系统。

谢谢,

帕斯沃拉

【问题讨论】:

    标签: yii2 laravel-5.3 remember-me


    【解决方案1】:

    Yii2 有auth_key - 它的默认名称,但你可以定义你自己的列名,然后在实现 yii\web\IdentityInterface 的身份类中声明它,在函数getAuthKey() 中。

    【讨论】:

    【解决方案2】:

    Yii 2(和大多数 php 框架)中的 remember me 函数使用基于 cookie 的登录。

    来自docs

    getAuthKey() 返回一个用于验证基于 cookie 的登录的密钥。密钥存储在登录 cookie 中,稍后将与服务器端版本进行比较,以确保登录 cookie 有效。

    Yii 默认使用auth_key 字段。这可能和 Laravel 的 remember_token 是同一个字段。

    工作原理如下:

    1. 选中remember me 字段登录。
    2. Yii 设置一个包含用户(序列化)idauth_keyduration 的 cookie(表示此 cookie 有效期的秒数)。在yii2中,cookie名称由config(用户组件)中的identityCookie数组指定。
    3. 检查所有客人的请求是否存在cookie,如果存在且有效,则用户已登录。

    这基本上就是基于 cookie 的登录的工作方式,所以我假设 Laravel 使用了类似的,即使不是完全相同的实现。

    【讨论】:

      猜你喜欢
      • 2017-02-19
      • 2018-08-20
      • 1970-01-01
      • 2014-10-26
      • 2017-09-27
      • 2012-07-08
      • 1970-01-01
      • 2022-08-20
      • 2020-09-05
      相关资源
      最近更新 更多