我正在开发Grails REST应用程序。我有三个用户角色:BusinessOwner,User,Admin,Public(Not Authentication)
我有像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和应用用户角色的最佳做法是什么?
答案 0 :(得分:2)
我认为网址不应根据授权规定或以其他方式分隔网络服务。对于格式良好的RESTful服务,应在HTTP标头中发送令牌(如OAuth 2.0中所示)。
大多数成熟的RESTful框架都内置了授权流程。据我所知,它们都没有为与授权机制相同的服务实现不同的URL