1

我正在为我的应用程序使用哨兵。

但是,我仍然对实现哨兵权限来声明对象的所有者感到困惑。

例如:任何作者写一篇文章。

我的问题:文章所有者如何设置权限?

4

1 回答 1

2

我不会将 Sentry 用于此目的,因为它是当前用户 ID 与文章作者 ID 的简单比较。据我所知,要为此使用默认的 Sentry 权限,您需要为用户添加的每篇文章的用户权限添加一个新权限 - 或者使用自定义函数扩展 Sentry 包来处理此问题。

另一种方法是首先使用 Sentry 检查是否允许用户添加文章,通过向用户添加作者权限或创建作者组,然后仅通过比较用户来检查他们是否是所有者和作者编号。您还可以拥有可以编辑任何文章的用户的编辑权限或组。然后检查将类似于:

//see if user can add article via sentry permissions
if ($current_user->hasAccess('author'))

//see if user can edit current article if they are author, or have edit permissions
if (($current_user->id == article->author_id) || $current_user->hasAccess('edit'))

hasAccess('edit') 部分使用 Sentry 检查用户是否可以编辑文章,即使他们不是作者。

如果您在多个地方进行检查,以防您在任何时候更改评估所有权的方式,您可能希望抽象出所有者检查。

于 2014-01-21T05:39:26.313 回答