Не получается обновить,пересоздать куку auth_key в yii2?

почему этот метод switchIdentity() не пересоздает auth_key? а этот метод removeIdentityCookie() не удалет куки? что я делаю не так?
нужно чтобы в будущем пользователи после закрытия бразуера вновь могли автоматичски авторизоваться по куке,при этом они могли бы удалить все сеансы(сессии) на других устройствах,кроме текущей,как это можно реализовать?

SiteController.php
/**
     * Displays homepage.
     *
     * @return mixed
     */
    public function actionIndex()
    {

        // `identity` текущего пользователя. `Null`, если пользователь не аутентифицирован.
        $identity = Yii::$app->user->identity;
        // var_dump($identity);
        // beauty_view($identity);


        // switchIdentity($identity, $duration = 0)
        // Yii::$app->user->switchIdentity($identity, 0);
        // if( (bool)Yii::$app->request->get('delete_all_sessions') === true) Yii::$app->user->logout();

        if( (bool)Yii::$app->request->get('delete_all_sessions') === true) Yii::$app->user->switchIdentity($identity, 0);
        if( (bool)Yii::$app->request->get('delete_all_sessions') === true) Yii::$app->user->removeIdentityCookie();

        var_dump(Yii::$app->user->getId);

       // Yii::$app->getResponse()->getCookies()->remove(Yii::createObject(array_merge($this->identityCookie, [
       //      'class' => 'yii\web\Cookie',
       //  ])));


        // beauty_view(Yii::$app);
        return $this->render('index');
    }


конфиг
'user' => [
        'identityClass' => 'app\models\User', // User must implement the IdentityInterface
        // 'identityClass' => 'common\models\User', // User must implement the IdentityInterface
        'enableAutoLogin' => true,
        'enableSession' => true
        // 'loginUrl' => ['user/login'],
        // ...
    ],
  • Вопрос задан
  • 317 просмотров
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
я хз что за чудо Вы пытаетесь сделать, но вот что из ошибок я заметил:
1. Yii::$app->user->getId возвращает идентификатор пользователя, а getIdentity() объект, так что удивление, что removeIdentityCookie() ни как не влияет на id мне не понятно.
Тоже с switchIdentity - этот метод меняет Identity не меняя пользователя.
2. если Вы хотите сменить пользователя, стоит вызвать logiout(), а потом login() для другого пользователя.
Крайне рекомендую посмотреть вот этот объект: https://www.yiiframework.com/doc/api/2.0/yii-web-user
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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