Shiro-从数据表中初始化资源和权限
2017-01-11 01:05
155 查看
我们在 applicationContext中配置受保护的资源和权限的关系
这样配置有时候我们受保护的资源和权限特别多,我们希望将这些配置资源和权限信息放到数据库中,然后我们通过一个SQL 的方式取出来, 这种方式应该是最合适的。
我们可以查看 配置中 filterChainDefinitions 的源码
通过 debug的方式 可以看到在初始化时, filterChainDefinitionMap是一个LinkedHashMap,其内容就是我们在配置文件中配置的内容
所以我们可以配置一个单独的bean filterChainDefinitionMap 作为ShiroFilterFactoryBean的属性。
修改applicationContext.xml
创建一个 bean
再次打断点查看
<property name="filterChainDefinitions"> <value> /login.jsp= anon /shiro/login= anon /shiro/logout = logout /user.jsp = roles[user] /admin.jsp = roles[admin] # everything else requires authentication: /** = authc </value> </property>
这样配置有时候我们受保护的资源和权限特别多,我们希望将这些配置资源和权限信息放到数据库中,然后我们通过一个SQL 的方式取出来, 这种方式应该是最合适的。
我们可以查看 配置中 filterChainDefinitions 的源码
public void setFilterChainDefinitions(String definitions) { Ini ini = new Ini(); ini.load(definitions); //did they explicitly state a 'urls' section? Not necessary, but just in case: Ini.Section section = ini.getSection(IniFilterChainResolverFactory.URLS); if (CollectionUtils.isEmpty(section)) { //no urls section. Since this _is_ a urls chain definition property, just assume the //default section contains only the definitions: section = ini.getSection(Ini.DEFAULT_SECTION_NAME); } setFilterChainDefinitionMap(section); }
1 public void setFilterChainDefinitionMap(Map<String, String> filterChainDefinitionMap) { 2 this.filterChainDefinitionMap = filterChainDefinitionMap; 3 }
通过 debug的方式 可以看到在初始化时, filterChainDefinitionMap是一个LinkedHashMap,其内容就是我们在配置文件中配置的内容
所以我们可以配置一个单独的bean filterChainDefinitionMap 作为ShiroFilterFactoryBean的属性。
修改applicationContext.xml
创建一个 bean
package com.java.shiro.factory; import java.util.LinkedHashMap; public class FilterChainDefinitionMapBuilder { public LinkedHashMap<String, String> buildFilterChainDefinitionMap() { LinkedHashMap<String, String> map = new LinkedHashMap<>(); // 在实际开发中访问数据表 //这里必须是一个LinkedHashMap 保持顺序 map.put("/login.jsp", "anon"); map.put("/**", "authc"); return map; } }
再次打断点查看
相关文章推荐
- mongodb基本概念
- Ubuntu系统下解决SublimeText3中文输入
- 关于Linux下的密码输入*的问题
- 华为云使用初体验
- (找数字)HDU - 2141
- 洛谷 p1044 栈 对递归的感觉又加深了
- github常用操作
- github常用操作
- dns服务搭建
- dns服务搭建
- Leetcode Merge Intervals
- SVN与eclipse集成安装步骤_百度经验
- [24]CSS3 弹性伸缩布局(上)
- pip 更改源 pip加速
- 分析分布式服务框架
- CentOS 6.5 Install Oracle Java 8
- 【机器学习】线性回归
- jqery实现一个图标上下滑动效果
- Python中从SQL型数据库读写dataframe型数据
- openresty 前端开发轻量级MVC框架封装二(渲染篇)