对REST资源的权限
我正在编写一组rest服务,在一些参考资料中,我正在处理以下情况。例如: 使用资源: /文章 用户可以创建文章,用户不能删除任何文章。用户可以获得他们创建的所有文章的列表(get/articles),但看不到其他用户的文章。将有一组特殊的“管理员”用户,他们有足够的权限查看或删除任何文章 我认为有两种方法可以做到这一点:对REST资源的权限,rest,permissions,Rest,Permissions,我正在编写一组rest服务,在一些参考资料中,我正在处理以下情况。例如: 使用资源: /文章 用户可以创建文章,用户不能删除任何文章。用户可以获得他们创建的所有文章的列表(get/articles),但看不到其他用户的文章。将有一组特殊的“管理员”用户,他们有足够的权限查看或删除任何文章 我认为有两种方法可以做到这一点: 如本例所示,只有一个端点,并在服务的POST、GET和DELETE代码中处理权限 使用不同的端点/admin/articles,使用单独的实现,并在验证之后和服务代码之前处理
- 如本例所示,只有一个端点,并在服务的POST、GET和DELETE代码中处理权限
- 使用不同的端点/admin/articles,使用单独的实现,并在验证之后和服务代码之前处理权限
您认为/cleaner/RESTfullish哪个更好?如果两个用户可以创建具有相同标识符的文章,那么它就更“干净”,更容易在更深层次(如文件系统)上表示它们 /{username}/articles
如果他们都在同一个用户空间中创建文章,那么每资源授权就更充分了。我会选择第1种方法-具有相同的端点,原因如下:
我不能谈论“RESTfully”,但由于您使用的是相同的资源,至少部分操作相同,权限不同,所以我觉得分离端点有点奇怪/文章普通用户将在该资源上通过帖子添加文章。如果管理员用户必须能够在特定的用户名称空间中编写文章(模拟其他用户),该怎么办。在单独的/admin/articles服务中,在用户空间o上发布此消息是否更好?您可以将其视为模拟,但/{username}只不过是管理员用户具有写入权限的位置。执行操作的用户的身份通过身份验证头等其他方式处理。如果管理员需要编写自己的文章,那么他们可以像普通用户一样工作。