我已经创建了一个允许用户注销的YII2站点,而不是YII2文件夹中的页面。在YII2中,我使用的是nav组件,因此布局的注销部分如下所示
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']
],
],
],
],
]);我试过Javascript。这是最新的。
window.onload=function() {
document.getElementById("logout").onclick=function() {
var myForm = document.createElement("form");
myForm.action='http://151.236.49.237/~aceify1/booking/site/logout';// the href of the link
myForm.target="myFrame";
myForm.method="POST";
document.body.appendChild(myForm);
myForm.submit();
return false; // cancel the actual link
}
}但它只是在YII2注销网址上显示内部服务器错误。
任何想法都将不胜感激。
发布于 2019-11-14 22:43:35
您可以禁用注销功能的CSRF验证检查。将此代码添加到控制器中,或者根据需要修改已有的beforeAction()
public function beforeAction($action)
{
if ($action->id == 'logout') {
$this->enableCsrfValidation = false;
}
return parent::beforeAction($action);
}发布于 2019-11-16 21:30:25
您只需将其转换为不带data-method='POST'的简单链接
并删除下面一行形式的SiteController的behaviors函数
'logout' => ['post'],https://stackoverflow.com/questions/58841854
复制相似问题