在CakePHP中创建类似Basecamp的登录

时间:2010-01-04 06:52:48

标签: cakephp authentication basecamp

我正在尝试创建一个类似登录的basecamp,用户可以使用url登录以查看他们的公司项目: http://abc.com/companyname/

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

2 个答案:

答案 0 :(得分:1)

我会使用Auth组件进行登录。我不会弄乱ACL和东西,因为我觉得这很混乱。

我会通过在users表中添加user_level,access_level或permissions列来实现此目的。然后在这里你可以存储一个数值或类似值。

然后在用户模型中,当他们使用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组件变量。还要确保您的auth类型设置为controller,并且您正确配置了allow()和deny()。

所有这一切的一大问题是,如果你在控制器中使用了beforeFilter(),你需要确保做parent :: beforeFilter()以确保app_controller中的东西事先运行: )

答案 1 :(得分:1)

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

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

您也可以查看面包店,因为社区编写的其他auth组件可能会满足您的需求。强烈推荐,因为Auth / ACL很难做得很好,并且始终是Web应用程序的一个主要问题。