在cakephp(版本2.X)中,我可以对用户进行身份验证,但当用户尝试从地址栏访问其无法访问的网页时,我会遇到问题。 会发生什么是我被路由到带有missingControler错误的基本索引文件。 所以我的路径是.... / crm /学生在网页上用户不应该访问,然后我被定向到/ crm / crm /
我不清楚为什么我没有被重定向到登录页面,而且我被告知要使用.htaccess,我不知道这与认证有什么关系。
此外,我尝试在过滤之前使用'没有成功重定向用户
我还检查了其他堆栈溢出帖子,我没有让它工作。有人可以指向我的文档来澄清来自地址栏的未经授权的请求吗?
http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html 处理未经身份验证的请求
//app controller
public $ components = array(
"Email",
'Session',
'Auth' => array(
'loginRedirect' => array('controller' => 'users', 'action' => 'dashboard'),
'logoutRedirect' => array('controller' => 'users','action' => 'login' ),
'authorize' => array('Controller'), // Added this line
// array('DebugKit.Toolbar' => array( 'panels' => array('MyCustom', 'timer'=>false))),
));
public function isAuthorized($user) {
// Admin can access every action
// debug($user['role']);
// debug("asdddddddddddddddddddddddddd");
if (isset($user['role']) && $user['role'] === 'admin') {
return true;
}
// return $this->Auth->redirectUrl();
// Default deny
return false;
}
// student controller
public function isAuthorized($user) {
if (isset($user['role']) && $user['role'] === 'manager') {
return true;
}
if (isset($user['role']) && $user['role'] === 'student') {
return true;
}
if (isset($user['role']) && $user['role'] === 'teacher') {
return false;
}
return parent::isAuthorized($user);
}
`I have the project in a subfolder which could cause the issue Router::connect('/', array('controller' => 'users', 'action' => 'login')); this routes to crm/crm/... again with the` project name repeated and how do i stop this as this is the problem?
答案 0 :(得分:1)
这与Auth组件的工作方式有关,如果" unauthorizedRedirect"属性没有设置然后它似乎重定向到" / {app-directory"这是你的域名 - 因此你最终会在" yourDomain / youDomain"。
最简单的修复方法,在AppController中的Auth组件中添加
public $componens = array(
//other components
'Auth' => array(
//other properties
'unauthorizedRedirect' => 'url to redirect to' //e.g. '/'
)
);