1

我正在尝试创建一个类似登录的大本营,用户可以在其中登录以使用以下网址查看他们的公司项目:http: //abc.com/companyname/

我不知道如何创建 2 级身份验证...(一个在公司级别,另一个在用户级别)我是 cakePHP 新手,我不知道如何根据我的要求修改内置的身份验证组件。任何帮助将感激不尽...

4

2 回答 2

1

我会使用 Auth 组件进行登录。我不会弄乱 ACL 之类的东西,因为我觉得这很令人困惑。

我会通过在你的用户表中添加一个 user_level、access_level 或 permissions 列来解决这个问题。然后在这里你可以存储一个数值或类似的值。

然后在 User 模型中,当他们使用 Auth 登录时,您可以将该值存储在 Auth 用户会话对象中。所以你可以在你的控制器中使用 $this->Auth('User.access_level') 来完成它。

现在 Auth 组件默认在 app_controller 中有一个 isAuthorized() 函数。调用此函数以查看是否有人已登录。您可以对其进行修改以检查 access_level 并采取适当的措施。我使用了这种技术,以便用户无法进入 /cms 路由,除非他们是 admin = 1。

文档中有更多信息,http: //book.cakephp.org/view/172/Authentication,你可以在这里找到更多关于 isAuthorized() 的信息,http: //api.cakephp.org/class/auth -component#method-AuthComponentisAuthorized

请确保在 app_controller 中设置了所有 Auth 组件变量。还要确保您的身份验证类型设置为控制器,并且您的允许()和拒绝()配置正确。

所有这一切的一个大问题是,如果您在控制器中使用 beforeFilter(),则需要确保执行 parent::beforeFilter() 以确保 app_controller 中的内容事先运行:)

于 2010-01-04T10:25:56.910 回答
1

老实说,我认为您应该检查 ACL 组件。如果您遵循它,这本书的教程非常好。主要的警告是它不提供行级访问控制机制(例如,用户 X 可以编辑这个特定条目)。但是,它确实为执行用户/组级别访问控制提供了基础,然后您可以扩展自己以创建所需的行级别访问权限。

简而言之,ACL 组件支持级联权限(例如,子组可以具有细粒度的访问控制,但从父组继承权限)。如果您需要稳健性和粒度,这可以让生活变得更轻松。

您还可以查看面包店,因为社区编写的其他身份验证组件可以满足您的需求。强烈推荐,因为 Auth/ACL 东西很难做好,而且始终是 Web 应用程序的主要问题。

于 2010-01-04T21:53:53.693 回答