cakephp2.5.1在" isAuthorized"之后重定向到{app_folder} / {app_folder}。返回假

时间:2014-06-13 12:33:01

标签: php cakephp cakephp-2.5

我试图根据用户的类型(即学生,管理员,员工)授权用户,这是我在AppController.php中编写的代码。

public function isAuthorized($user = null) {
    // Any registered user can access public functions
    if (empty($this->request->params['admin']) && empty($this->request->params["staff"])) {
        return true;
    }
    if(isset($this->request->params["staff"])){ 
        return (bool)($user["type"]==="staff" || $user["type"]==="admin");
    }
    // Only admins can access admin functions
    if (isset($this->request->params['admin'])) {
        return (bool)($user['type'] === 'admin');
    }
    // Default deny
    return false;
}

在“学生”登录后,我在地址栏中输入了localhost/kit-web/admin,以确保“学生”无权访问管理页面。但奇怪的是,该网页被重定向到localhost/kit-web/kit-web。这导致missing Kit-webController.php错误。如果任何用户拥有对某个页面的访问权限,那么一切都正常。

我猜测一个可能的原因是我使用composer安装了CakePHP,因此目录配置与解压缩不同一。但是,我已根据cakephp教程配置了ROOTCAKE_CORE_INCLUDE_PATH,APP_DIR的位置。
有谁知道出了什么问题?

1 个答案:

答案 0 :(得分:0)

我自己解决了这个问题。 阅读CakePHP的核心源文件,我意识到如果该字段" unauthorizedRedirect"未指定,AuthComponent重定向到" / {app directory}" (即$ this->重定向(" / {app directory}")默认情况下。$ this-> redirect(" / {app directory}")不会重定向将页面转换为" /"因为{app directory}被视为控制器名称。我不确定这是否是错误。但我希望如果有人在解决同样的问题,这会有所帮助。