shiro.ini配置文件中可以通过自定义定义Realm实现用户、角色的自定义,但是urls暂时没有找到相关办法,
因为是初始化便加载配置文件,于是便想是否能通过自定义Filter实现
1、web.xml配置
<!--
<filter>
<filter-name>ShiroFilter</filter-name>
<filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
</filter>
-->
<filter>
<filter-name>ShiroFilter</filter-name>
<filter-class>com.shiro.MyShiroFilter</filter-class>
</filter>
定向为自己的filter
2、java文件
WebEnvironment env = WebUtils.getRequiredWebEnvironment(getServletContext());
setSecurityManager(env.getWebSecurityManager());
FilterChainResolver resolver = env.getFilterChainResolver();
PathMatchingFilterChainResolver resolver1 = (PathMatchingFilterChainResolver) resolver;
resolver1.getFilterChainManager().createChain("/user.jsp", "roles[user]");
resolver1.getFilterChainManager().createDefaultChain("/**");
if (resolver != null) {
setFilterChainResolver(resolver1);
}
3.重写shiro.all.jar中的IniFilterChainResolverFactory类
因为加载中需要走这个方法来加载配置文件的URLS为了防止urls为空因此代码中1.5之后添加了manager.createDefaultChain("/**");
但是我们自己的Filter在这个的后面,而且有过滤有顺序,因此是要把他默认的给删掉,但是没有找到相关的方法,于是就把这个注释掉,替换一下class文件。
暂时学习到这,基本上满足了可以通过后台配置用户角色以及请求的需求,如果有更好的解决办法,希望能在评论区留言