使用Acl管理面板的最佳实践?

时间:2013-02-27 17:58:13

标签: cakephp cakephp-2.3

我正在与Cakephp合作几天,我印象非常深刻。但现在我正试图与Acl更接近,但这有点令人困惑。

我的情况是,我想创建一个包含前端和后端的网站。但我不确定我是否真的需要Acl,因为所有用户都应该可以使用所有用户,当然除了后端。 Cookbook中的教程不是非常有用,因为这一切都与创建用户,组和角色以及为登录,添加和编辑用户等创建正确的视图有关。

但我只是需要有关Acl处理的信息?它是否限制了控制器或模型的使用?

或者我还需要除Acl之外的其他东西吗?如果检查错误,可能更容易检查会话变量并直接重定向到控制器?

希望你能以正确的方式带我,

提前感谢德国的最好问候,

的Sascha

2 个答案:

答案 0 :(得分:0)

我建议你阅读本章并使用Auth组件,而不是简单地访问会话,因为你很想做。

http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html

对于您的管理员后端,请使用前缀路由。

http://book.cakephp.org/2.0/en/development/routing.html#prefix-routing

与auth一起使用,很容易在isAuthorized()回调中检查和实现。

答案 1 :(得分:0)

如果您不需要各种“级别”权限;即允许任何登录用户访问后端,最好跳过ACL(暂时)。如果在以后的阶段需要ACL,您可以随时添加它。

您可以从'简单'身份验证开始。食谱中的这一章描述了如何做到这一点; http://book.cakephp.org/2.0/en/tutorials-and-examples/blog-auth-example/auth.html

一般情况下,不要开发您不需要的功能 now 。例如。实现ACL是因为可能将来需要它只会使您的开发过于复杂,而且很有可能,当这个时刻到来时它们不符合要求。

与@burzum不同,我不是前缀路由的忠实粉丝(仅适用于非常简单的项目),因为您最终会在同一控制器中混合前端和后端操作和逻辑。

我建议为后端创建单独的控制器,可能将它们作为插件开发。无论哪种方式,您可以考虑为后端创建“基础”控制器和模型,并让后端控制器/模型扩展它们。这样,您就可以在1个位置定义用于后端的组件/行为。此外,通过仅在后端控制器中加载“Auth”组件,您不必在前端的每个控制器中执行“允许”操作

例如

;

class BackendCoreController extends AppController {
    // only load the Auth component in backend controllers
    // regular/frontend controllers don't require authentication
    $components = array('Auth');

}


class PageAdminController extends BackendCoreController {

}

有关将后端开发为插件的注意事项,请参阅我的回答:

Best way to implement admin panel in CakePHP