首页 > 编程语言 > 详细

spring security 3 动态获取权限

时间:2015-07-21 17:24:27      阅读:368      评论:0      收藏:0      [点我收藏+]

主要讲如何动态获取,因为之前是spring容器启动时获取数据库中的权限。

在配置过程中,出现了不生效的问题。

之前的代码:这种方式不生效

ApplicationContext ctx = new ClassPathXmlApplicationContext("application*.xml"); 
FactoryBean factoryBean = (FactoryBean) ctx.getBean("&filterInvocationSecurityMetadataSource"); 
DefaultFilterInvocationSecurityMetadataSource fids = (DefaultFilterInvocationSecurityMetadataSource) factoryBean.getObject(); 
FilterSecurityInterceptor filter = (FilterSecurityInterceptor) ctx.getBean("filterSecurityInterceptor"); 
filter.setSecurityMetadataSource(fids);

改为:

HttpServletRequest request = ServletActionContext.getRequest();
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext());
FactoryBean factoryBean = (FactoryBean) ctx.getBean("&filterInvocationSecurityMetadataSource");
FilterInvocationSecurityMetadataSource fids = (FilterInvocationSecurityMetadataSource) factoryBean.getObject();
FilterSecurityInterceptor filter = (FilterSecurityInterceptor) ctx.getBean("filterSecurityInterceptor");
filter.setSecurityMetadataSource(fids);

改成下面的代码后就可以了,自己思考了一下,当时感觉spring是单例的,获得到的bean也是同一个bean即可。

之所以不生效,我感觉就是bean并不是重新再spring中获取,而是找到web中已经得到的,然后再改他的授权MAP.

自己的一些理解,不知道对不对。求拍砖

spring security 3 动态获取权限

原文:http://my.oschina.net/u/2259804/blog/481420

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!