Java 您能以编程方式配置Spring安全性吗?

Java 您能以编程方式配置Spring安全性吗?,java,spring-security,Java,Spring Security,我正在使用现有的应用程序配置Spring安全性,以实现基本的安全性(即,用户可以根据其角色看到哪些页面)。出现的问题是,我们是否可以在java中设置每个页面所需的角色,而不是ApplicationContext.xml 我们的想法是将它们存储在数据库的一个表中,这样我们就可以轻松地更改它们,而无需重新部署。这可能吗?如何配置?是的,您可以通过编程方式配置Spring安全性。但我认为这不是你想要/需要做的 出现的问题是,我们是否可以在java中设置每个页面所需的角色,而不是ApplicationC

我正在使用现有的应用程序配置Spring安全性,以实现基本的安全性(即,用户可以根据其角色看到哪些页面)。出现的问题是,我们是否可以在java中设置每个页面所需的角色,而不是ApplicationContext.xml


我们的想法是将它们存储在数据库的一个表中,这样我们就可以轻松地更改它们,而无需重新部署。这可能吗?如何配置?

是的,您可以通过编程方式配置Spring安全性。但我认为这不是你想要/需要做的

出现的问题是,我们是否可以在java中设置每个页面所需的角色,而不是ApplicationContext.xml

您可以实现自己的
AccessDecisionManager
类,该类查询数据库以获取每个资源/页面的规则(或任何内容)。这在SpringSecurity手册的第页中进行了描述


或者,您可以在MVC控制器中嵌入自己的自定义访问控制逻辑。使用
SpringSecurityContext
获取请求的
Authorization
对象,找出身份和/或权限,并按照您的意愿实施决策。

我们使用拦截器实现了这一点。基本上,MethodInterceptor代理对您想要的任何方法的任何调用(即从数据库获取对象)。然后,您可以通过编程方式截取对象并检查当前用户,并在访问控制方面执行几乎任何您想要的操作。如果这意味着要查询数据库中有访问权限的用户列表(因此,您可以在不修改代码的情况下更改列表),那就这样吧。

谢谢您指出我真正需要的。我刚刚完成了设置,它似乎工作得很好。