identityClass对于任何一个使用yii2的人来说,登录都是躲不过的,今天就为你讲讲会员认证组件的配置方法及相关变量。
这是必填项,我们必须为认证组件制定一个类并且要继承于IdentityInterface接口。
'user' => [
'identityClass' => 'app\admin\models\User',
],
loginUrl
此配置作用于当游客访问了需要授权页面后进行的跳转行为,这也是我们在使用yii2的user中经常配置的。
'user' => [
'identityClass' => 'app\models\User',
'loginUrl' => ['/user/login']
],
returnUrl提示:当我们在控制器内执行Yii::$app->user->loginRequired()方法即会调用loginUrl指定的路由。
该项与登录后跳转回登录前请求的页面配置有关。关于returnUrl的使用我们将单独拿出一篇文章来介绍。
enableAutoLogin是否开启cookie自动登录,默认为false,不开启。
idParam该项默认值为__id,作为session的key值,如果你的yii2程序存在多个模块并且需要登录时,请设置该项为不同值,避免冲突。
'user' => [
'identityClass' => 'app\models\User',
'idParam' => '__user'
],
authTimeout
登录过期时间,单位为秒,如果我们不在web.php的user内进行设置则按照服务器session过期时间来决定。
如果设置了authTimeout则在authTimeout和服务器session会话的过期时间中取最小值,有一点要注意,当你设置enableAutoLogin为真的时候,authTimeout变为无效。这也很好理解,enableAutoLogin为真后是按照cookie来管理登录状态的。
'user' => [
'identityClass' => 'app\models\User',
'authTimeout' => 3600
],
absoluteAuthTimeout
针对于authTimeout而言,当我们设置了authTimeout=10的时候,如果在第9秒刷新一次将会重新计算。
而当我们设置的是absoluteAuthTimeout=10,则即便你在9秒进行了页面刷新,等过了10秒依然会登录状态失效。
当然,enableAutoLogin时则absoluteAuthTimeout也不起作用。
'user' => [
'identityClass' => 'app\models\User',
'absoluteAuthTimeout' => 3600
],
authTimeoutParam
存储过期时间的session key值,默认为__expire。一般来说没必要去设置,多模块的时候需要注意。
'user' => [
'identityClass' => 'app\models\User',
'authTimeoutParam' =>'__user_expire'
],
absoluteAuthTimeoutParam
用途和 authTimeoutParam 一样。
autoRenewCookie默认为真,主要决定于是否刷新cookie的过期时间,默认情况下每次我们使用 Yii::$app->user->identity 时都会刷新一次。
一般来说不需要设置,如果你想设置为假,可以如下。
'user' => [
'identityClass' => 'app\models\User',
'autoRenewCookie' =>false
],
enableSession
默认为真,代表使用session来维护登录状态,当然对于无状态服务,比如我们yii2的restful接口开发,需要将enableSession设置为false。
'user' => [
'identityClass' => 'app\models\User',
'enableSession' =>false
],
阿北的知识分享