我正在使用现有应用程序配置Spring-Security,仅用于基本安全性(即用户可以根据其角色查看哪些页面)。问题出现了,想知道我们是否可以设置java中每个页面所需的角色而不是ApplicationContext.xml。
我们的想法是将它们存储在我们数据库的表中,这样我们就可以通过重新部署轻松地更改它们。这可能吗?怎么样?
答案 0 :(得分:5)
是的,您可以通过编程方式配置Spring-Security。但我认为这不是你想要/需要做的。
我们想知道是否可以在java中设置每个页面所需的角色而不是ApplicationContext.xml。
您可以实现自己的AccessDecisionManager
类来查询数据库,以获取每个资源/页面的规则(或其他)。这在SpringSecurity手册的Section IV中有所描述。
或者,您可以在MVC控制器中嵌入自己的自定义访问控制逻辑。使用SpringSecurityContext
获取请求的Authorization
对象,删除身份和/或权限,然后按照您的意愿实施决策。
答案 1 :(得分:1)
我们使用拦截器做到了这一点。基本上,MethodInterceptor代理对任何所需方法的任何调用(即从数据库中获取对象)。然后,您可以以编程方式拦截对象并检查当前用户,并在访问控制方面执行您想要的任何操作。如果这意味着在数据库中查询有权访问的用户列表(因此列表可以在不修改代码的情况下进行更改),那么就是这样。