3

当我创建一个新实体时,我想向这个新实体授予 ACL 权限(又名 ACL 条目)。到目前为止很容易:-)

问题出现在以下场景中:

  • 最终用户无需在网站上进行身份验证即可创建实体。
  • 持久化这个新实体的服务因此在没有身份验证上下文的情况下运行。
  • 但是:要授予 ACE,需要有一个活动的身份验证上下文。

SpringJdbcMutableAclService用于SecurityContextHolder.getContext().getAuthentication()获取当前身份验证,因此似乎没有办法绕过这个要求。

任何想法都非常感谢!

4

1 回答 1

2

自己找到了答案:

在 Web 应用程序中,始终存在身份验证上下文。如果用户未通过身份验证,则身份验证org.springframework.security.authentication.AnonymousAuthenticationToken具有单个授予权限:ROLE_ANONYMOUS.

因此,授予该用户创建 ACL 的权限很简单。只需将 配置PermissionGrantingStrategy为使用此角色来授权请求​​。

于 2012-06-22T13:09:31.523 回答