2012-10-12 19 views
0

使用CakePHP这是我的情况:什么是CakePHP检查用户是否被允许对特定项目执行操作的方式?

我有用户和Order s。 Order由用户创建。只有创建了Order的用户才可以编辑它。 (管理员也可以,但我不认为这很重要)。

我正在使用标准的Auth组件,并在我的OrdersController中有一个isAuthorized功能,用于检查用户是否已登录并阻止用户执行不允许他们执行的操作。

我想根据传递的参数和数据库中的数据来决定用户是否可以执行操作。即用户是否拥有他们试图编辑的订单?如果是这种情况,我目前正在检查每个动作的内部。

有没有一种方法可以触发由isAuthorized返回false所触发的相同工作流?也许抛出一个异常?

我不想在isAuthorized函数内部进行这些更精细的检查,因为它需要丑陋的方法来访问传递的参数以及重复数据检索。 CakePHP希望我如何处理这个问题?

(我有更复杂的检查,在其他控制器使)

回答

1

这是你在找什么:

http://book.cakephp.org/2.0/en/tutorials-and-examples/blog-auth-example/auth.html#authorization-who-s-allowed-to-access-what

重写的AppController的isAuthorized()调用和内部 检查父类是否已经授权用户。如果他不是,那么只需让他访问添加动作,并有条件地访问 编辑和删除。

希望这有助于

+0

感谢您的链接,这正是我所处的情况。我不喜欢在调用动作之前需要访问数据源(因为我们几乎可以保证在稍后的动作中检索该数据)。 – BudgieInWA

相关问题