【发布时间】:2019-11-13 16:49:30
【问题描述】:
我创建了一个 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 注销 URL 上显示内部服务器错误。
任何想法都将不胜感激。
【问题讨论】:
-
检查调试工具栏、app.log 或 apache 的 error.log 是否有实际错误可能是个好主意。
-
_csrf 令牌必须与 POST 请求一起发送。
-
错误代码是什么?并且您想从其他网址退出网站吗?这样您的域是 domain.com 并且您想在 example.com 中使用 url 注销?
-
Michal - 我检查了 error_log 并且有一个错误,但它没有用。我猜重要的部分是这个“异常 'yii\web\BadRequestHttpException' 并带有消息'无法验证您的数据提交。'”这可能与 Manu 所说的有关。 ttrasn - 它来自同一个域,所以 yii 就像 domain.com/subsite 并且我想要有 logoug 链接的页面在根域中。我将创建一个 YII2 页面,它只有一个注销链接和 iframe/嵌入它。感谢您的意见,如果有人有任何比 iframe 更巧妙的想法,我很想听听。
-
如果消息类似于“无法验证您的数据提交”。然后需要禁用 CSRF 验证...
标签: yii2