用户与会员

时间:2014-02-27 11:33:26

标签: cakephp cakephp-2.3

这更像是一个建议的问题,而不是一个确切的答案......

在我的CakePHP应用程序中,我将拥有后端用户和前端成员。它们具有完全不同的角色和权限(用户是应用程序管理员,成员是在网站上注册而无需访问应用程序后端的访问者)。我应该为这两种授权类型使用不同的表,还是应该使用角色参数管理它们,并根据它将表绑定到它们的配置文件,为什么一种解决方案比另一种更好?

3 个答案:

答案 0 :(得分:3)

使用相同的表格和roletype字段。您只需登录一次即可轻松管理帐户。

使用ACL或自定义权限系统允许它们使用不同的控制器/操作。

答案 1 :(得分:1)

对于权限,我有3种方法可以做到:

严格角色的方式: 您的应用程序的每个角色都可以访问带有前缀的函数,但不能访问任何其他前缀。

  

例如:管理员可以访问 admin_edit ,但不能访问 customer_edit

users表中添加角色varchar或enum,在Config/core.php中添加路由前缀,并允许AppController::beforeFilter中的访问权限:允许每个角色访问其前缀仅

分层方式: 您的应用程序的角色以分层方式排序,角色可以访问其前缀和他下面的每个前缀。

  

例如:管理员可以访问 admin_edit customer_edit ,但   客户无法访问 admin_edit

您在users表格中添加了角色varchar或枚举,Config/core.php中的路由前缀,并通过检查每个AppController::beforeFilter允许访问$this->request->params['prefix']角色可以访问它。

自定义方式: 您需要管理员访问某些功能,但不是全部。您需要另一个角色才能访问管理员可以访问的某些功能,而某些功能管理员则无法访问。

  

例如:管理员可以访问 admin_edit customer_edit ,但不能    customer_create user_stat 客户可以访问    customer_edit customer_create user_stat ,但不是 admin_edit 或    user_edit

使用ACL。这不是管理应用程序权限的最简单方法,但如果您需要特定权限,则这是最好的方法。所以请记住:只在你确实需要时使用ACL。

答案 2 :(得分:0)

我同意cornelb:只有一张桌子。以下是一些其他原因:

  • 如果添加外键约束,使它们引用应用程序管理器表和访问者表可能会很麻烦。总是当你想指向一个用户时,你需要2个字段,而不是1个(指向管理器表的字段,以及访问者表中的一个字段 - 其中一个必须为空)。如果你需要连续2个用户ID字段,使用外键怎么办?然后你突然需要4个字段。 Simper,所有键都指向一个表(用户类型由上述字段决定)。

  • 有时您可能希望用户ID成为主键的一部分 - 但如果您有两个不同的用户ID字段,每个表中有一个,那就更复杂了。因为数据库无法保证每个用户ID都是唯一的 - 您必须在应用程序级别自己完成。