在经过身份验证的API中,从URL或JWT获取ID更好吗

2022-01-21 20:58:55 标签 apiauthenticationurljwtresources

所以我用Passport (JWT)在Laravel上创建了一些api。

我有问题,决定什么是首选的方法为以下:

PUT: api/users/{user_id}
PUT: api/users/me

我需要api,这样用户可以更改自己的信息,但我也希望它的api是可访问的管理员更改说的信息。

目前,我只使用第一个API,并检查ID是否与JWT auth中的ID相同,或者请求API的是Admin。

但我也在想也许把它们分开会更好。第一个api应该只能被管理员访问,我应该从第二个api的JWT认证的ID。

正确的选择是什么?还是有更好的选择?

我认为使用这种方法更好:

PUT: api/users/{user_id}

这允许任何人以相同的方式持续链接到您自己的个人资料或其他一些用户的个人资料。然后,根据您的身份验证和授权,可以允许您对该资源执行不同的操作。

没有正确或更好的选择。你似乎明白使用它们中的任何一个的含义,所以这真的取决于你的选择。与/{user_id} version you have to be extra careful not to remove proper validation rules from your code. If you used /users/me for a GET operation you版本时,您必须格外小心,不要从代码中删除正确的验证规则。如果你使用/users/me for a GET operation you would have to be careful with setting cache headers. If a browser would cache a对于GET操作,你必须小心设置缓存头。如果浏览器会缓存一个响应users/me and then another user would request this endpoint then you could get some other user's data. For PUT operations thou然后另一个用户会请求这个端点然后你可以得到一些其他用户的数据。不过,对于PUT操作来说,这不是一个问题。

阅读全文

▼ 版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说 cuoshuo.com —— 程序员的报错记录

部分内容根据CC版权协议转载;网站内容仅供参考,生产环境使用务必查阅官方文档

辽ICP备19011660号-5

×

扫码关注公众号:职场神器
发送: 1
获取永久解锁本站全部文章的验证码