Задать вопрос
@Anarmus

Как хранит сессии yii2, если DbSession не подключён?

Всем привет! Делаю свой первый проект на yii2, на сайте есть авторизация и функция "запомнить", которая сохраняет авторизацию на 30 дней. Чтобы заработал remember-me, в модель user (которая extends ActiveRecord implements IdentityInterface) я добавлял функции из IdentityInterface:
public static function findIdentity($id)
{
	return self::findOne($id);
}

public function getId()
{
	return $this->User_ID;
}

public static function findIdentityByAccessToken($token, $type = null)
{
	return static::findOne(['access_token' => $token]);
}

public function getAuthKey()
{
	return $this->authKey;
}

public function validateAuthKey($authKey)
{
	return $this->authKey === $authKey;
}


И соответственно при логине:
Yii::$app->user->login($login_model->getUser(),$login_model->rememberMe());

// Где rememberMe :
public function rememberMe()
{
	return $this->rememberMe ? 3600*24*30 : 0;
}
// из модели login


Может ли кто-нибудь подсказать, где и в каком виде, при таком раскладе, yii2 хранит сессию?
И можно ли безболезненно перенести всю эту магию на DbSession? Стоит ли вообще это делать?
И можно ли при каком-нибудь из этих раскладов реализовать функционал "Пользователь был онлайн/последний раз был на сайте"? Или проще сразу использовать Redis?
  • Вопрос задан
  • 2059 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
qonand
@qonand
Software Engineer
в стандартной конфигурации yii2 хранит сессию в файлах, но стоит понимать что функция "запомнить" - работает не через сессию, а через куку. Т.е. при авторизации пользователю ставится зашифрованная кука с ключем аутентификации, а при повторном посещении пользователем сайта по ней происходит в существующих пользователях.

Хранилище для сессий естественно можно настраивать. Более подробно о работе с сессиями в yii написано здесь
Ответ написан
Комментировать
SamDark
@SamDark
Yii2 core team
Так, как задано в php.ini. По умолчанию в файлах.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы