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