在Spring安全性中拒绝具有相同角色的多个用户的访问权限

我遇到过这种情况:我的应用程序有几个角色(管理员,主持人,用户)。 主持人和用户可以编辑一些表格。 所有的权利都可以。 但是当我作为用户(角色用户)登录并更改URL中的id时,我可以简单地获取并编辑另一个用户(角色用户)的表单。

如何拒绝访问并阻止此类操作?

PS。 弹簧和弹簧的安全版本是3.1.2

更新 – 添加了弹簧安全上下文

                       

您似乎希望考虑安全规则的实际域对象。 具有用户和角色的正常SpringSecurity设置可以添加如下安全规则:who(具有某个角色的athenticated用户)可以访问某些URL /方法调用。 如果您希望能够使用这样的增强规则:who(具有某种角色的athenticated用户)可以访问某些URL /方法调用以及他可以使用哪些域对象,那么您需要使用ACLfunction 。

编辑。 但是如果你需要一个像这样的安全规则那么设置ACL可能是一种过度杀伤力。 您可以尝试通过自定义Web安全表达式增强实际的SpringSecurity设置:

  

您的userIsAuthor()方法将在哪里:

  • 从URL中提取对象的id(我想像/ moderator / item / 56这样
  • 检查当前用户是否是项目id = 56的作者。