yii2多模块独立登录,与登录源码分析

本文详细介绍了在Yii2框架中如何实现多模块独立登录的配置方法,包括设置user组件的idParam属性。同时,深入剖析了user组件的重要属性,如enableSession、enableAutoLogin等。此外,还分析了login方法、session和cookie的管理过程,以及如何处理登录状态的过期。最后,探讨了不同模块独立登录的关键在于设置不同的idParam。
摘要由CSDN通过智能技术生成

1.使用方法

    要设置子模块单独登陆,需要在各个模块中独立配置user组件,并配置idParam属性

    主模块components中配置
    'user' => [           
        'class'=>'\yii\web\User',
        'identityClass' => 'backend\models\Admin',
    ]
    主模块中获取user组件\Yii::$app->user
    子模块components中配置
    'user' => [           
        'class'=>'\yii\web\User',//子模块中user组件class属性不能省略,不然会报错
        'identityClass' => 'frontend\models\User',
        'idParam'=>'frontId',
    ]

    子模块中获取user组件\Yii::$app->controller->module->user(控制器中$this->module->user)。多模块登陆方法到此为    止。不想看分析的可以就此打住。


2.源码分析

2.1 user组件重要属性

    enableSession:是否允许用session保存账号id,实现session保存登陆状态

    enableAutoLogin: 是否允许cookie自动登陆,只有enableSession为true时生效。另外在yii\web\User::login中                                                   ($identity,$duration),$duration表示cookie有效时间,这有这个值大于0,cookie登陆才有效                                                $duration表示cookie有效时间,这有这个值大于0,cookie登陆才有效

    autoRenewCookie:是否自动刷新cookie有效时间

    idParam: session中存放账号id的key,不同模块登陆就靠这个属性了

    identityClass : 账号AR类,必须实现接口IdentityInterface

    authTimeoutParam: session中保存idParam的相对过期时间的key

    authTimeout: authTimeoutParam的值

    absoluteAuthTimeoutParam:session中保存idParam的绝对过期时间的key

    absoluteAuthTimeout: absoluteAuthTimeoutParam的值

    解释下相对过期时间与绝对过期时间:

    每次在发起新请求后,如果当前时间小于相对过期时间,同时小于绝对过期时间,那么就把相对过期时间 authTimeoutParam的值加上authTimeout,绝对过期时间absoluteAuthTimeoutParam的值保持不变。如果当前时间小于相对过期时间,但是大于等于绝对过期时间,那么认为登陆过期。比如相对过期时间为30分钟,绝对过期时间为60分钟,在12:00点首次登陆,在enableSession为true的情况下,设置authTimeoutParam为当前时间12:00上+30分钟,absoluteAuthTimeoutParam为当前时间12:00上+60分钟。10分钟后请求再次到来,那么相对过期时间authTimeoutParam在当前时间12:10上加30分钟,绝对时间不变,就这样,不断请求,authTimeoutParam不断递增,但是absoluteAuthTimeoutParam始终没有变化,终于当某次请求距第一次请求大于等于absoluteAuthTimeoutParam,即13:00的时候,就会登陆失效。当然如果在13:00之前,距离上一次登陆时间超过了30分钟,那也过期了。


注意:相对过期时间与绝对过期时间不是必须的。可以都不设置,也可以只设置一个。如果都没有设置,那么登陆是否失效取决于session失效时间,否则取决于session失效时间和相对过期时间与绝对过期时间。


2.2 代码分析

1)在login(IdentityInterface $identity, $du

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kkyy3210

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值