Как создать сеанс работы в yii2

64
7

Я начал использовать Yii2 basic и должен хранить информацию о сеансе. Я уже знаю, что в Yii2 basic это должно быть сделано с использованием сеансов вроде

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

Проблема в том, что каждый раз, когда браузер закрывается, мой сеанс истекает. В любом случае, чтобы сохранить сеанс в активном режиме или отключить сеанс, так что даже я закрою браузер и снова открою его. Он не попросит меня снова указать мое имя пользователя или пароль. Мне нужно сделать это в YII2 Basic.

спросил(а) 2021-01-19T11:58:59+03:00 6 месяцев, 1 неделя назад
1
Решение
64

сеансовые файлы cookie устанавливают время истечения срока действия через 7 дней,

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

'

ответил(а) 2021-01-19T11:58:59+03:00 6 месяцев, 1 неделя назад
46

Для этого вам нужно использовать файлы 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 вашего браузера, это не ваша фактическая информация, а идентификатор сеанса, и это отправляется при повторном открытии вашего браузера и восстановлении сеанса с помощью этого идентификатора. Ваша фактическая информация хранится в вашей сессии (на сервере). Это как работает yii 2 cookie.

ответил(а) 2021-01-19T11:58:59+03:00 6 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема