我试图根据用户的类型(即学生,管理员,员工)授权用户,这是我在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教程配置了ROOT
,CAKE_CORE_INCLUDE_PATH
,APP_DIR的位置。
有谁知道出了什么问题?
答案 0 :(得分:0)
我自己解决了这个问题。 阅读CakePHP的核心源文件,我意识到如果该字段" unauthorizedRedirect"未指定,AuthComponent重定向到" / {app directory}" (即$ this->重定向(" / {app directory}")默认情况下。$ this-> redirect(" / {app directory}")不会重定向将页面转换为" /"因为{app directory}被视为控制器名称。我不确定这是否是错误。但我希望如果有人在解决同样的问题,这会有所帮助。