如何在yii2中创建终身会话

fzsnzjdm  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(156)

我已经开始使用Yii2 basic,需要存储会话信息。我已经知道在Yii2 basic中,这应该使用如下会话来完成:

$session = Yii::$app->session;
$session->open();
$_SESSION["a_id"] = $id;
$_SESSION["w_auth"] = "true";

问题是每次关闭浏览器时,我的会话都会过期有没有办法让会话保持活动状态或设置会话销毁,这样即使我关闭浏览器并再次打开它。它也不会再次要求我输入用户名或密码。我需要在YII2 Basic中执行此操作。

unguejic

unguejic1#

会话cookie设置在7天后过期'

'components' => [
    'session' => [
        'class' => 'yii\web\Session',
        'cookieParams' => ['lifetime' => 7 * 24 *60 * 60]
    ],

`

vdzxcuhz

vdzxcuhz2#

您需要使用cookies来实现这一点。Cookies是保存在您的浏览器中的信息。下面是在yii2中的操作方法:

$cookies = Yii::$app->response->cookies;

// add a new cookie to the response to be sent
$cookies->add(new \yii\web\Cookie([
            'name' => 'a_id',
            'value' => $id,
]));

登录时添加上面的cookie,然后在操作中使用它:

$cookies = Yii::$app->response->cookies;

$a_id = $cookies->getValue('a_id');

if($a_id !== null) {
    // user is logged in
}

注意:您浏览器的cookie中保存的不是您的实际信息,而是会话ID,当您重新打开浏览器并通过该ID恢复会话时,会发送该ID。您的实际信息保存在您的会话(服务器)中。这就是yii 2 cookie的工作原理。

参考

相关问题