Cakephp 如何限制普通用户访问所有视图

Cakephp 如何限制普通用户访问所有视图,cakephp,cakephp-3.0,Cakephp,Cakephp 3.0,我想限制role=“普通”用户访问其他控制器视图 例如。。。我在JobsController下添加了视图 如果当前登录用户的用户角色为“普通”,则基本上他或她无法继续进行该操作,并且会出现提示,则您将被限制访问该页面 如果当前用户登录具有用户角色=“admin”,则他或她可以继续 下面的代码是在AppController.php下 public function isAuthorized($user) { if (isset($user['role']) &&a

我想限制role=“普通”用户访问其他控制器视图

例如。。。我在JobsController下添加了视图

如果当前登录用户的用户角色为“普通”,则基本上他或她无法继续进行该操作,并且会出现提示,则您将被限制访问该页面

如果当前用户登录具有用户角色=“admin”,则他或她可以继续

下面的代码是在AppController.php下

 public function isAuthorized($user)
    {
        if (isset($user['role']) && $user['role'] === 'admin') {        
                return true;
        }
        if (isset($user['role']) && $user['role'] === 'ordinary') {

            $allowedActions = ['index', 'logout', 'add'];
            if(in_array($this->request->action, $allowedActions)) {
                return true;
            }
        }
        return false;

    }
你可以这样放


角色必须出现在用户表字段中


希望它能帮助解决您的问题

不要编写太多的php代码,您可以只使用一个非常简单的配置文件,例如via。我检查了您发送的链接,对我来说它很麻烦,您能帮我以类似if role=Admin的方式编写php吗?您知道您可以在任何控制器中放置一个自定义的
isAuthorized
函数吗?任何没有自定义控制器的控制器都将使用此控制器。如果你想共享功能,你可以从你的自定义文件中调用它。如果你回显
$this->request->session()->read('Auth.User.role')
,它向你显示了什么?我认为没问题,我没有测试过很多案例@GregSchmidt,它只会显示用户role@distromob,它当然应该显示用户角色。知道它是否会有助于解决问题。编辑我的答案,先生@GregSchmidt,或者你发布一个新的答案,这样其他用户就会理解我问@user143在他的情况下它显示了什么。
<?php
if($this->request->session()->read('Auth.User.role') == 'admin'){
  /// display the views
  /// if current login user has admin role
}
else{
   echo"You are not allowed to access this area";
}
?>