REST资源的权限

时间:2013-03-27 11:00:07

标签: rest permissions

我正在编写一组休息服务,在某些资源中,我处理以下情况。例如:

有资源:

/制品

用户可以创建文章,用户无法删除任何文章。用户可以获得他们创建的所有文章的列表(GET /文章),但无法看到其他用户的文章。会有一套特别的" admin"用户,有权查看或删除任何文章。

我看到两种方法:

  • 只有一个端点与示例一样,并处理服务的POST,GET和DELETE代码中的权限

  • 拥有不同的端点/ admin / articles,具有独立的实现,并在身份验证之后和服务代码之前处理权限。

您认为哪个更好/更清洁/ RESTfullish?

2 个答案:

答案 0 :(得分:1)

如果两个用户可以创建具有相同标识符的文章,那么它更“干净”,更容易在更深层次上表示它们,如文件系统。

  

/ {名} /制品

如果他们都在同一个用户空间中创建文章,那么每个资源授权就更合适了。

答案 1 :(得分:0)

我会选择第一种方法 - 由于以下原因而拥有相同的端点:

  1. 更清洁,更容易理解。
  2. 更容易维护 - 假设您将来会有更多角色。这将强制为您添加的每个角色创建更多端点。
  3. 松耦合。通过使用此方法,您可以将应用程序的授权问题与API本身分离。
  4. 无论如何,您必须检查代码本身的授权,以检查客户端是否调用了未经授权的资源,因此您不会使用第二种方法保存任何内容。