博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring security 3 动态获取权限
阅读量:6167 次
发布时间:2019-06-21

本文共 1233 字,大约阅读时间需要 4 分钟。

  hot3.png

主要讲如何动态获取,因为之前是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.

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

转载于:https://my.oschina.net/qiaojj/blog/481420

你可能感兴趣的文章
字典的用法
查看>>
数字电路中关键路径的选取
查看>>
Multi-target tracking by Lagrangian relaxation to min-cost network flow
查看>>
第十章:DOM
查看>>
C# 高级编程03----细节内容
查看>>
字符编码笔记:ASCII,Unicode和UTF-8(转)
查看>>
map循环
查看>>
SpringBoot 配置定时任务
查看>>
Dynamics CRM2011/2013 删除个人视图
查看>>
PAT-乙级-01
查看>>
基于贪心算法的几类区间覆盖问题 2014-01-21 12:13 191人阅读 评论(0) 收藏...
查看>>
图解SVD分解
查看>>
AUDIO latency
查看>>
前端nginx+Java后台ftp处理页面图片上传踩坑
查看>>
数据库中数据的移动
查看>>
codeforces 380A Sereja and Prefixes (递归)
查看>>
对用户提交的恶意代码进行处理
查看>>
C#数组
查看>>
预处理器的条件指令
查看>>
通过cmp 指令执行后,相关标志位的值就可以看出比较的结果
查看>>