Здравствуйте.
Делаю простой интернет-магазин. После авторизации пользователя сессия почему-то очищается. Я в LoginForm.php
немного изменила код, чтобы через var_dumb()
посмотреть, сохраняется ли в сессию id
пользователя.
public function login()
{
session_start();
$this->_user = User::findByUsername($this->username, $this->password);
$_SESSION['user_id'] = $this->_user->getId();
var_dump($_SESSION['user_id']);
if ($this->_user) {
return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600 * 24 * 30 : 0);
} else {
return false;
}
}
Возымело интересный эффект, потому как после вывода мне id
(он таки сохраняется) я снова перезагружаю страничку и я залогиниваюсь. Но если убрать var_dumb()
, то сессия стирается.
Подскажите, пожалуйста, как решить эту проблему.
Настройки конфига фронтенда:
'user' => [
'identityClass' => 'common\models\User',
'enableAutoLogin' => true,
'identityCookie' => ['name' => '_identity-frontend', 'httpOnly' => true],
],
Yii::$app->session->open();
в методе init() контроллера, а не внутри login() - тогда сессия будет открываться и работать до процесса залогинивания.abstract class BaseController extends \yii\web\Controller {
и наследейте все контроллеры от него: class SiteController extends BaseController
. Собственно в нем и лучше завести метод init() со стартом сессии (Yii::$app->session->open();
), тогда сессия будет работать во всех контроллерах гарантированноВиртуальный выделенный сервер (VDS) становится отличным выбором
Как написать в правилоhtaccess, чтобы при заходе на сайт переправляло на public/index
Подскажите плз реализацию правильного написания вот этого куска, чтобы название стола бралось из переменной с помощью метода Post