【问题标题】:Api Endpoints for Members and Administrators Users成员和管理员用户的 API 端点
【发布时间】:2019-02-11 19:17:09
【问题描述】:

我在 API 中有以下资源:

公司>项目>项目用户>用户

资源相关如下:

  1. 一个公司有很多项目;

  2. ProjectUser 定义可以访问项目的用户;

我正在定义 API 端点来获取项目:

"/projects" > Get all projects that authenticated user can access        

"/companies/{companyId}/projects" > Get projects with `companyId` that authenticated user can access

我需要另外 3 个只有管理员用户才能访问的端点:

  1. 获取所有用户的所有项目

  2. 获取具有给定UserId的用户的所有项目;

  3. 使用给定的UserId 获取用户companyId 的项目。

这5个端点应该怎么变成?

【问题讨论】:

    标签: api asp.net-core-webapi api-design


    【解决方案1】:

    在这种情况下,特定于用户的资源通常带有 mymeuser 等前缀。例如:/my/projects/my/companies/{companyId}/projects。这有助于区分只需要身份验证但不需要资源过滤的一般请求,例如您的管理案例。对于管理员查询,您将点击 /projects/companies/{companyId}/projects 端点。然后,您可以使用 [Authorize(Roles = "Admin")] 之类的东西保护这些端点,并假设用户是管理员,他们将收到所有项目。而 my 前缀路由只需要 [Authorize] 以确保有一些经过身份验证的用户,然后将利用资源级授权仅返回属于该用户的项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-19
      • 1970-01-01
      • 2017-02-16
      • 2016-04-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多