假设一个带有分页表的应用程序。
该表显示了索引项(item1,item2,... itemN)。
分页结果由REST GET调用提供,例如/ items
项目的详细信息由/ items / 1或/ items / N
等GET调用提供问题是:哪种方法可以保护访问不允许的项目。
例如。
a)用户调用/ items会导致{1,2,3,4,5}打印出来 包含每个详细项目链接的表格 b)阻止对/ item / 6的调用
只有无国籍的解决方案,谢谢!
答案 0 :(得分:0)
不确定我完全理解你的问题。在我看来,你想拥有物品等级授权。例如,用户A应该只能看到项目1,3和5,而用户B应该看到项目1,2,3和6.如果是这种情况,您应该对列表和单个项目强制执行授权约束
如果您想要的是用户只能访问之前列出的项目,那么您就不会处于无状态环境中。调用该项目的结果取决于之前的调用。所以你有一个州。您可以移动状态,将其移动到客户端,但它仍然是状态。
如果您想要的是第二个选项,并且您希望您的服务主要保持无状态,请查看功能基础安全性。基本上,您的列表需要返回客户端需要使用的加密令牌才能访问各个项目。
基本上,不是只返回项目ID,而是添加加密令牌:
[
{ id = 1, token = 'XXX'},
{ id = 2, token = 'YYY'}
]
令牌将由以下内容组成:
您使用服务器私钥对授权令牌进行签名,因此没有人可以伪造它。您要求客户端将此令牌添加到任何请求(作为HTTP标头)。因此,服务器可以验证客户端是否已获得授权。
您可以将用户名添加到令牌中,以确保其他人无法重复使用授权。
请注意,我只是从内存中描述了这个实现。一如既往的安全,请仔细检查我告诉你的任何事情; - )