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

Почему не работает logout в Yii2?

Добрый вечер!

Понимаю, что ворос заезженный, смотрел поиск по тостеру: Yii2 не работает data-method=post? - ответа не нашел.

Суть:

Есть ссылка logout:

<?= Html::a("Выход", 'site/logout', [
                                'data' => [
                                    'method' => 'post'
                                ],
                                ['class' => 'white text-center']
                            ]
                        );?>


Также в SiteController:

public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'only' => ['logout'],
                'rules' => [
                    [
                        'actions' => ['logout'],
                        'allow' => true,
                        'roles' => ['@'],
                    ],
                ],
            ],
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'logout' => ['post'],
                ],
            ],
        ];
    }


Ну и в AppAsset.php:
class AppAsset extends AssetBundle
{
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        'css/site.css',
        'css/sticky-footer-navbar.css',
        'css/main.css',
        'css/fstyle.css',
    ];
    public $js = [
        'js/main.js'
    ];
    public $depends = [
        'yii\web\YiiAsset',
        'yii\bootstrap\BootstrapAsset',
    ];
}


Вроде все по науке, но не работает выход.

Сайт на Yii2, basic.

Код logout:

public function actionLogout()
    {
        Yii::$app->user->logout();

        return $this->goHome();
    }


В конфиге:

'user' => [
            'identityClass' => 'app\models\User',
            'enableAutoLogin' => true,
        ],
  • Вопрос задан
  • 2927 просмотров
Подписаться 1 Оценить 6 комментариев
Пригласить эксперта
Ответы на вопрос 2
sanchezzzhak
@sanchezzzhak
Ля ля ля...
я полагаю вы ломитесь по get запросу на logout, а у вас там разрешено только post запросы yii2 должен ответить 405 статусом ответа ( если я верно предположил )

Уберите или добавьте
'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'logout' => ['get','post'],
                ],
            ],
Ответ написан
@connor74 Автор вопроса
решил проблему.

<?= Html::a("Выход", ['site/logout'], [
                                'data' => [
                                    'method' => 'post'
                                ],
                                ['class' => 'white text-center']
                            ]
                        );?>


добавил квадратные скобки ['site/logout'] и заработало... как так?
Ответ написан
Ваш ответ на вопрос

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

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