将REST API中的CRUD限制为所有者

时间:2015-03-23 11:38:41

标签: php api rest laravel

我的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 AND DELETE方法限制为实际的资源所有者?

基本上我不希望除了拥有者之外的任何人能够编辑他的信息。

2 个答案:

答案 0 :(得分:2)

您已实施系统的身份验证部分,这意味着您的应用知道用户。现在,您需要设计一个授权子系统,这意味着您的用户可以访问

正如您的问题被标记为PHP和Laravel一样,Google快速搜索laravel授权会带来如下结果:

https://github.com/machuga/authority-l4

http://laravel.io/forum/02-03-2014-authority-controller-authorization-library-cancan-port

这应该是一个很好的起点。

答案 1 :(得分:1)

这通常通过附加带有秘密消息的自定义标头来解决,将请求标识为valid。我恐怕没有任何消息来源。

通常以X开头的标头 - 将其丢弃以免被其他方解析。例如X-Your-Secret