什么是REST API和用户角色设计最佳实践?
问题描述:
我正在开发一个Grails REST应用程序。我有三个用户角色:BusinessOwner,用户,管理员,公共(未验证)什么是REST API和用户角色设计最佳实践?
我已经喜欢api/business/1
端点。
当BusinessOwner角色的用户调用,它返回一个企业的所有细节,但如果与公众(未验证)用户角色调用,它返回的细节的一个子集。 所以,问题是如何实现端点:
1有一个端点像api/business/1
并检查用户的角色是什么,回到正确的价值观(几个if/else语句,....)
OR
2-具有单独的API领域,如下列其中每个都有它自己特定的安全,并返回特定子集:
api/admin/business/1
api/businessOwner/business/1
api/public/business/1
哪一个更好?和
设计REST API和应用用户角色的最佳做法是什么?
答
身份验证和授权
我认为一个URL的不应该规定或根据授权,否则单独的Web服务。对于格式良好的RESTful服务,令牌应该在HTTP头中发送(如OAuth 2.0中所发生的)。
大多数成熟的基于REST框架将内置有一个授权流程。据我所知,他们没有实现不同的URL相同的服务作为授权机制
选项1.这将允许在可用角色的变化容易vs选项2。 – bassmartin