Php Yii Login使用权限模块时所需的方法出现故障
当用户尝试使用Php Yii Login使用权限模块时所需的方法出现故障,php,yii,Php,Yii,当用户尝试使用ajax调用查询数据库并且会话已过期时,我尝试将重定向到登录页面,所有这些都是在使用权限模块时发生的 我在所有项目中搜索了403和loginRequired,并将die函数放在已找到文本的位置,但我找不到执行路径,以查看loginRequired未触发的原因 我正在使用gridView和filter对一些数据进行排序,而会话已过期 我收到一个错误403:需要登录 有人知道在这种情况下如何重定向用户吗?试试这个提示 首先,将其添加到您的配置中: ... 'components
ajax
调用查询数据库并且会话已过期时,我尝试将重定向到登录
页面,所有这些都是在使用权限
模块时发生的
我在所有项目中搜索了403
和loginRequired
,并将die
函数放在已找到文本的位置,但我找不到执行路径,以查看loginRequired
未触发的原因
我正在使用gridView
和filter
对一些数据进行排序,而会话
已过期
我收到一个错误403:需要登录
有人知道在这种情况下如何重定向用户吗?试试这个提示
首先,将其添加到您的配置中:
...
'components'=>array(
'user'=>array(
...
'loginRequiredAjaxResponse' => 'YII_LOGIN_REQUIRED',
...
),
...
然后在视图(布局)中添加:
所以,您可以看到,如果我们的请求不是ajax,我们只需重定向到登录url,否则,如果在用户组件配置集loginRequiredAjaxResponse
中,我们会回显它并结束应用程序。
如果两个if都失败,则调用登录所需的异常。我想您的响应中包含此消息,并且呈现了错误页面
如果使用自定义用户类并重写loginRequired()
函数,则可能会出现另一个问题
上面的代码在我的项目中工作,我使用用户+权限模块堆栈。cgridview有一个函数afterAjaxUpdate,在更新完成后运行。如果收到403响应,您是否尝试过使用该选项重定向它们
还有一个ajaxUpdateError(可能这是您应该使用的),您可以用同样的方式使用它,当收到403响应时,将它们从javascript重定向到登录页面。我尝试过这些选项;但是它们只有在你不使用权限模块的情况下才有效,比如admin和clientI找到了流程;权限模块使用模块默认控制器中的错误方法捕获错误;此方法在需要登录之前触发。没有流<代码>如果($user->isGuest==true)$user->loginRequired();否则抛出新的CHttpException(403,$message)代码>我想它在这里。会话超时后,用户必须注销,所以他的角色将是来宾。作为一名新手,我无法理解如何使用loginRequiredAjaxResponse来处理ajax会话超时。
<?php
if (Yii::app()->components['user']->loginRequiredAjaxResponse){
Yii::app()->clientScript->registerScript('ajaxLoginRequired', '
jQuery("body").ajaxComplete(
function(event, request, options) {
if (request.responseText == "'.Yii::app()->components['user']->loginRequiredAjaxResponse.'") {
window.location.href = "/login";
}
}
);
');
}
?>
public function loginRequired()
{
$app=Yii::app();
$request=$app->getRequest();
if(!$request->getIsAjaxRequest())
{
....
}
elseif(isset($this->loginRequiredAjaxResponse))
{
echo $this->loginRequiredAjaxResponse;
Yii::app()->end();
}
throw new CHttpException(403,Yii::t('yii','Login Required'));
}