好的,所以我按照以下方式设置了我的网站。
索引重定向到“登录”页面,因为整个站点仅适用于登录用户。当用户尝试查看他们无权访问的页面时,会将这些页面转储到登录页面中,并显示“您无权访问该位置”消息。
我想更改此设置,以便登录用户尝试访问未经身份验证的页面时,会将其重定向回引荐页面。
在我的个人控制器中,我有一个isAuthorised方法,用于检查用户角色并允许或禁止访问。
class AppController extends Controller {
public $theme = 'Default';
public function beforeRender(){
$this->set('referer',$this->referer());
$this->set('userData', $this->Auth->user());
}
public $components = array(
'Session',
'Auth' => array(
'loginRedirect' => array(
'controller' => 'users',
'action' => 'login'
),
'logoutRedirect' => array(
'controller' => 'users',
'action' => 'login',
'home'
),
'authorize' => array('Controller')
)
);
public function isAuthorized($user) {
// Admin can access every action
if (isset($user['role']) && $user['role'] === 'admin') {
return true;
}
// Default deny
return false;
}
}
查看文档,我发现了unauthorizedRedirect,并认为这可能会做到,但我还没有找到实现它的方法。我已经尝试了几件事,但还是找不到任何正常工作的东西。
答案 0 :(得分:0)
您可以在auth组件中添加此行,以将未经授权的用户重定向回他们来自的页面。
'unauthorizedRedirect' => $this->referer()
看起来像这样:
public $components = array(
'Session',
'Auth' => array(
'loginRedirect' => array(
'controller' => 'users',
'action' => 'login'
),
'logoutRedirect' => array(
'controller' => 'users',
'action' => 'login',
'home'
),
'authorize' => array('Controller'),
'unauthorizedRedirect' => $this->referer()
)
);
答案 1 :(得分:-1)
public function beforeRender(){
$user = READ USER SESSION
if(!$this->isAuthorized($user)){
WRITE REDIRECT CODE HERE
}
$this->set('referer',$this->referer());
$this->set('userData', $this->Auth->user());
}