我正在使用Yii 1.1.17,我注意到在我的一些网页上,我希望只有注册用户能够查看我在Google的网站管理员工具上遇到软404错误。
例如
http://www.example.com/sell/
当您转到http://www.example.com/sell/view
时,它会将您重定向到http://www.example.com/login
现在我只有240个软404错误。视图操作最初仅设置为注册用户。但是在启动我的网站几个月后。我改变了然后错误开始弹出。
有没有办法解决这个问题?或解决方法?
这里是view
操作的accessRules,仅适用于注册用户:
public function accessRules()
{
return array(
array('allow',
'actions'=>array('index', 'new'),
'users'=>array('*'),
),
array('allow',
'actions'=>array('view'),
'users'=>array('@'),
),
array('allow',
'actions'=>array('admin','delete', 'update', 'create','update','upload'),
'expression'=>'app()->user->isAdmin()',
),
array('deny',
'users'=>array('*'),
),
);
}
答案 0 :(得分:1)
您可以添加deniedCallback
作为
public function accessRules()
{
return array(
array('allow',
'actions'=>array('index', 'new'),
'users'=>array('*'),
'deniedCallback' => array($this, 'redirectToLogin'),
),
array('allow',
'actions'=>array('view'),
'users'=>array('@'),
'deniedCallback' => array($this, 'redirectToLogin'),
),
array('allow',
'actions'=>array('admin','delete', 'update', 'create','update','upload'),
'expression'=>'app()->user->isAdmin()',
'deniedCallback' => array($this, 'redirectToLogin'),
),
array('deny',
'users'=>array('*'),
'deniedCallback' => array($this, 'redirectToLogin'),
),
);
}
public function redirectToLogin($user = null, $rule = null){
Yii::app()->controller->redirect('/login', true, 403);
}
然后,您可以使用您喜欢的任何状态代码重定向。
您可以详细了解deniedCallback
here。
详细了解redirect
here
答案 1 :(得分:0)
以简单的方式,您只需要向控制器识别它。如果不是用户登录,则会自动进入登录页面。如下例所示:
np.random.random
希望可以提供帮助
答案 2 :(得分:0)
您只是将dbmanager / rbac库嵌入到您的yii应用程序中,
http://www.yiiframework.com/doc-2.0/yii-rbac-dbmanager.html