1

我有所有者、管理员和用户角色。只有一个主人,那就是我。如何拒绝管理员编辑或删除我?所有者的 id 为 1,所以如果我要签入 isAuthorized() 如果管理员不是所有者,我会这样做:$user['id'] != 1。现在我将如何检查被编辑或删除的用户是否是所有者。我知道如何通过以下方式获取用户 ID:$this->request->params['pass'][0]但不是用户角色。

4

1 回答 1

1

我认为我不会将“所有者”作为角色。owner_id允许某人成为普通角色类型,然后在项目表中保留一个字段要容易得多。

这样,您可以让角色处理更高级别的授权,并且在单个项目的操作/方法中,您可以检查所有权(通常使用自定义isOwner()函数来保持代码 DRY)。

以您的PostsController->edit($id)功能为例,您可以find()在 Post 上进行操作,然后进行比较owner_id$this->Auth->user('id')确保他们只有在他们是所有者的情况下才能进行编辑。

如果您想检索 Role 并使其保持可用,您可以在 AppController 的 beforeFilter 中执行此操作,并根据Auth->userroles的字段在表上正常查找。role_id

于 2013-01-11T14:44:55.453 回答