我已经使用以 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/