代码之家  ›  专栏  ›  技术社区  ›  emersonthis

CakePHP:你能在页面上使用admin前缀吗?

  •  0
  • emersonthis  · 技术社区  · 13 年前

    在我的控制器中,我通过在函数前加上 admin_ 然后让AppController isAuthorized() 功能检查用户是否为管理员。有没有办法(从PageController)处理页面?我们创建了一个管理主页(比如仪表板),如果用户没有登录,他们就无法查看,但非管理用户可以查看。我不知道如何防止这种情况发生。

    2 回复  |  直到 13 年前
        1
  •  1
  •   Community Mohan Dere    6 年前

    你对书页是什么意思?由 PagesController .htm(l) 文件位于您的webroot中?

    如果您的案例是第一件事,那么您可以为Pages Controller实现此逻辑。 如果是第二个,则请求根本不通过CakePHP(或任何其他服务器端脚本),因此不可以通过Cake控制对它的访问。

    如果你的情况是别的,那么完善你的问题,我很乐意帮忙。

    正如评论所暗示的那样,你所处的情况是:1。在PagesController的类声明中,它说:

    class PagesController extends AppController {
    

    这意味着您可以在任何扩展AppController的类中使用AppController中的任何逻辑。因此,您可以使用 isAuthorized() 在PagesController中。

    你所需要做的就是创建一个名称与你的“管理面板视图”相同的方法,并且只允许管理员访问它。或者只检查用户角色。

        2
  •  1
  •   Andrea Alhena    13 年前

    假设第一个参数是请求的Page,并且您可以使用以下语句捕获它:

    $this->request->pass[0];
    

    你可以使用isAuthorized函数来解决你的问题,做这样的事情。。。

    public function isAuthorized()
    {
        $page = strtolower($this->request->pass[0]);
    
        if ($page = 'admin_page')
        {
             if ( $this->Auth->user('Role.role_field') == 'Admin' )
             {
                return TRUE;
             }
             else
             {
                return FALSE;
             }
        }
        else
        {
             // This will authorize users for the other pages
             return TRUE;
        }
    }
    

    希望这能有所帮助。经常查看食谱:有时你需要查看旧的书籍,以找到你真正需要的东西。编码快乐!