我已经开始使用Yii2 basic并且需要存储会话信息。我已经知道在Yii2 basic中,这应该使用像
这样的会话来完成$session = Yii::$app->session;
$session->open();
$_SESSION["a_id"] = $id;
$_SESSION["w_auth"] = "true";
问题在于,每次关闭浏览器时,我的会话都会过期 无论如何都要保持会话活动或设置会话销毁,所以即使我关闭浏览器并再次打开它。它不会再问我我的用户名或密码。我需要在YII2 Basic中这样做。
答案 0 :(得分:1)
会话cookie设置7天后过期时间 `
'components' => [
'session' => [
'class' => 'yii\web\Session',
'cookieParams' => ['lifetime' => 7 * 24 *60 * 60]
],
`
答案 1 :(得分:0)
您需要使用Cookie。 Cookie是保存在浏览器中的信息。 以下是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。您的实际信息保存在您的会话中(在服务器中)。这就是yii 2 cookies的工作原理。