0

使用 cakePHP 这是我的情况:

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

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

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

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

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

(我要在其他控制器中进行更复杂的检查)

4

2 回答 2

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() 调用并在内部检查父类是否已经授权用户。如果他不是,那么只允许他访问添加操作,并有条件地访问编辑和删除。

希望这可以帮助

于 2012-10-12T11:33:22.143 回答
1

有几种方法可以让它发挥作用。我在这里概述了一个简单的示例:http: //nuts-and-bolts-of-cakephp.com/2009/04/22/simplistic-example-of-row-level-access-control-with-auth-security-和-app-model-in-cakephp/

它应该让您大致了解如何处理此问题,然后您可以在此基础上作为一种方法进行构建。

于 2012-10-12T18:37:45.373 回答