将 REST API 中的 CRUD 限制为所有者
Restrict CRUD in REST API to owner
我的 api 定义了这条路线:
GET test.com/api/v1/users
POST test.com/api/v1/users
PUT test.com/api/v1/users/{id}
GET test.com/api/v1/users/{id}
DELETE test.com/api/v1/users/{id}
此外,我正在使用 OAuth2 密码身份验证,因此这些资源只有在经过身份验证后才可用。
我的观点是.. 保持 RESTFULL API 原则,我应该如何限制实际资源所有者的 PUT 和 DELETE 方法?
基本上我不希望除了所有者之外的任何人能够编辑他的信息。
这通常通过附加自定义 header 和秘密消息来解决,将请求标识为 valid
。恐怕我没有这方面的任何消息来源。
通常 header 以 X
开头 - 丢弃它们以免被其他方解析。 X-Your-Secret
例如。
您已经实现了系统的身份验证部分,这意味着您的应用程序知道谁用户。现在您需要设计一个 授权 子系统,这意味着您的用户可以访问 什么。
由于您的问题被标记为 PHP 和 Laravel,因此快速 Google 搜索 laravel 授权会得到如下结果:
https://github.com/machuga/authority-l4
或
http://laravel.io/forum/02-03-2014-authority-controller-authorization-library-cancan-port
这应该是一个很好的起点。
我的 api 定义了这条路线:
GET test.com/api/v1/users
POST test.com/api/v1/users
PUT test.com/api/v1/users/{id}
GET test.com/api/v1/users/{id}
DELETE test.com/api/v1/users/{id}
此外,我正在使用 OAuth2 密码身份验证,因此这些资源只有在经过身份验证后才可用。
我的观点是.. 保持 RESTFULL API 原则,我应该如何限制实际资源所有者的 PUT 和 DELETE 方法?
基本上我不希望除了所有者之外的任何人能够编辑他的信息。
这通常通过附加自定义 header 和秘密消息来解决,将请求标识为 valid
。恐怕我没有这方面的任何消息来源。
通常 header 以 X
开头 - 丢弃它们以免被其他方解析。 X-Your-Secret
例如。
您已经实现了系统的身份验证部分,这意味着您的应用程序知道谁用户。现在您需要设计一个 授权 子系统,这意味着您的用户可以访问 什么。
由于您的问题被标记为 PHP 和 Laravel,因此快速 Google 搜索 laravel 授权会得到如下结果:
https://github.com/machuga/authority-l4
或
http://laravel.io/forum/02-03-2014-authority-controller-authorization-library-cancan-port
这应该是一个很好的起点。