gpt4 book ai didi

php - Yii2 - 如何在用户身份中设置动态 authTimeout?

转载 作者:可可西里 更新时间:2023-11-01 00:54:27 24 4
gpt4 key购买 nike

在这里,我扩展了 Yii2 的 User 身份。

这是我的配置。

'user' => [
'identityClass' => app\models\UserMaster::class,
'enableAutoLogin' => false,
'loginUrl' => ['/auth/login'],
'authTimeout' => 86400
],

在这里,我静态定义了authTimout。但是,我想做的是从数据库中获取超时值并将其设置在 authTimeout 中。

谢谢。

最佳答案

您可以在处理请求之前使用事件设置authTimeout:

'as beforeRequest' => [
'class' => function (Event $event) {
/* @var $app \yii\web\Application */
$app = $event->sender;
$app->getUser()->authTimeout = (new Query())
->select('value')
->from('{{%settings}}')
->where('name = :name', ['name' => 'authTimeout'])
->scalar($app->getDb());
}
],

但可能更明确的方法是创建自定义组件并在 init() 中处理它。

class WebUser extends \yii\web\User {

public function init() {
parent::init();

$this->authTimeout = (new Query())
->select('value')
->from('{{%settings}}')
->where('name = :name', ['name' => 'authTimeout'])
->scalar();
}
}

然后在你的配置中使用新的组件:

'components' => [
'user' => [
'class' => WebUser::class,
'identityClass' => app\models\UserMaster::class,
'enableAutoLogin' => false,
'loginUrl' => ['/auth/login'],
],
// ...
],

关于php - Yii2 - 如何在用户身份中设置动态 authTimeout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52423705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com