2010-06-07 75 views
2

我正在努力为现有应用程序配置Spring-Security,只是基本的安全性(即用户可以根据他们的角色查看哪些页面)。问题出现了,想知道我们是否可以设置java中每个页面需要的角色,而不是ApplicationContext.xml。你可以通过编程来配置Spring-Security吗?

这个想法是将它们存储在我们数据库的表中,所以我们可以轻松地将它们更改为重新部署。这可能吗?怎么样?

回答

5

是的,你可以通过编程来配置Spring-Security。但我不认为这是你想要/需要做的。

问题出现了,想知道是否可以设置java中每个页面需要的角色而不是ApplicationContext.xml。

您可以实现自己的AccessDecisionManager类,它查询您的数据库以获取每个资源/页面的规则(或其他)。这在SpringSecurity手册的Section IV中有描述。

或者,您可以在您的MVC控制器中嵌入您自己的自定义访问控制逻辑。使用SpringSecurityContext来获取请求的对象,剔除身份和/或权限,然后根据需要执行决策。

+0

感谢您指出我真正需要的东西。我刚刚完成设置,似乎工作得很好。 – 2010-06-08 16:42:07

1

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

相关问题