首页 > 解决方案 > 成员和管理员用户的 API 端点

问题描述

我在 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. companyId使用给定的用户获取项目UserId

5个端点应该怎么变成?

标签: apiasp.net-core-webapiapi-design

解决方案


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


推荐阅读