码迷,mamicode.com
首页 > 编程语言 > 详细

spring security 3 动态获取权限

时间:2015-07-21 17:25:49      阅读:239      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!