PHP/REST - 如何实现基于角色的 API 访问?

标签 php rest api rbac

我已经使用以 API 为中心的方法启动了一个 PHP 项目(一个项目管理项目跟踪工具)并且取得了一个相当不错的开端。

到目前为止,我已经创建了 2 个 GET 方法,我想限制访问但不知道从哪里开始。

在我的数据库上下文中

  • Project 是封装不同 Action 项的容器。
  • Actionitems 被“分配”给一个用户

  • 用户存在于数据库中。

  • 角色 分配给用户。 (用户管理员 super )


  • 用户只能更新自己的项目

  • 管理员有创建和更新权限

  • Super 拥有完全的管理权限


My question is: Where should I start in PHP to only allow accessing the api via proper users, either via a login api, or some other means? Any help to get started would get me going.

首先,我已经成功创建了一个端点来访问访问资源(操作项),使用 JSON 字符串来测试响应。

我要限制的现有端点

GET /api/actionitems/

具有访问表中特定资源的一般结构如下:

GET /api/actionitems/4

请注意,应按如下方式访问其他 api 端点

每条路由最多 3 个路由标记(在/api/之后)

GET /api/users/123/actionitems   (get all actionitems for user 123)


GET /api/users/123/actionitems?<more-filers> applies further filtering

最佳答案

您需要为您的 API 处理身份验证授权

这些是理解解决方案的非常基本的步骤:

  • 客户端使用用户凭据(用户名、密码)调用登录 API。
  • 服务器验证用户凭据并生成 token 。
  • 服务器根据经过身份验证的用户 ID 将此 token 存储在数据库中并响应客户端。
  • 服务器已经具有授权角色权限,可以访问数据库中与此经过身份验证的用户关联的不同 API。
  • 客户端使用登录 API 提供的 token 调用资源 API。
  • 服务器验证数据库中的 token 并根据此 token 获取用户和用户角色权限以进行授权。
  • 资源 API 授权并提供所需数据或根据经过身份验证的用户角色权限执行操作。

有多种方法可以标准化地实现这一点:

关于PHP/REST - 如何实现基于角色的 API 访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55662469/

相关文章:

php - 我正在使用 C 语言的 libcurl 库编写一个 REST API 来登录我的网页

javascript - 文件上传作为表单工作正常,但作为 AJAX 查询返回 403

php - 如何使用 Laravel 将对象日期转换为 strftime?

javascript - 保存用户动态添加的字段中的多个输入

c# - Face API Base64 图片发布返回 badrequest

java - 路径参数和表单数据参数

java - 如何在 Glass Fish Server/Apache Tomcat 上部署 Rest Web 服务?

api - Golang - API Server 和 Socket 同时存在

typescript - 从 Typescript 中的 http 响应获取 header 值

asp.net-mvc - 您如何决定在单页应用程序中向用户推送多少数据?