非YII2页面上的YII2注销后链接
我已经创建了一个YII2站点,我想允许用户注销,而不是在YII2文件夹的页面上。在YII2中,我使用的是nav组件,因此布局的注销部分如下所示非YII2页面上的YII2注销后链接,yii2,Yii2,我已经创建了一个YII2站点,我想允许用户注销,而不是在YII2文件夹的页面上。在YII2中,我使用的是nav组件,因此布局的注销部分如下所示 echo Nav::widget([ 'options' => ['class' => 'navbar-nav navbar-right player-page'], 'encodeLabels' => false, 'items' => [ [ 'label' =&
echo Nav::widget([
'options' => ['class' => 'navbar-nav navbar-right player-page'],
'encodeLabels' => false,
'items' => [
[
'label' => 'Logout',
'items' => [
[
'label' => 'Sign out (' . Yii::$app->user->identity->username . ')',
'url' => ['/site/logout'],
'template' => '<a href="{url}" data-method="post">{label}</a>',
'linkOptions' => ['data-method' => 'post']
],
],
],
],
]);
但它只是在YII2注销URL上显示内部服务器错误
任何想法都将不胜感激。您可以禁用注销功能的CSRF验证检查。将其添加到控制器中,或根据需要修改已存在的beforeAction()
public function beforeAction($action)
{
if ($action->id == 'logout') {
$this->enableCsrfValidation = false;
}
return parent::beforeAction($action);
}
您只需将其转换为简单链接,而无需data method='POST' 并删除站点控制器的行下形式行为功能
'logout' => ['post'],
检查调试工具栏、app.log或apache的error.log是否存在实际错误可能是个好主意。\u csrf令牌必须与POST请求一起发送。错误代码是什么?您想从其他URL从站点注销吗?比如你的域名是domain.com,你想用example.com中的url注销?Michal-我检查了错误日志,发现有一个错误,但它没有用。我猜最重要的部分是“异常‘yii\web\BadRequestHttpException’,消息是‘无法验证您提交的数据’”,这可能与Manu所说的有关。ttrasn-它来自同一个域,因此yii类似于domain.com/subsite,我希望logoug链接的页面位于根域中。我将创建一个YII2页面,其中只有一个注销链接和iframe/embed链接。感谢您的输入,如果任何人有任何比iframe更流畅的想法,我很乐意听到。如果消息类似“无法验证您提交的数据”。那么需要禁用CSRF验证…或在一些操作中,如logoutAction write$this->enableCsrfValidation=false;谢谢你。最后,我做了我在上一篇评论中提到的事情,创建了一个只包含链接的页面,并对其进行了框架设计,通过一些设计调整,效果很好。
'logout' => ['post'],