未经授权的地址栏请求

时间:2014-08-08 00:51:01

标签: php .htaccess cakephp cakephp-2.3

在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?

1 个答案:

答案 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. '/'
    )
);