标签:find dHash 跳转 页面 权限设置 哪些 xxx 过滤 dep
shiro-xml中部分配置
<!--shiro的过滤器:名字必须和web.xml中那个没用的过滤器名字一样-->
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<property name="securityManager" ref="securityManager"/>
<!--没登陆跳转页面-->
<property name="loginUrl" value="/login/login"/>
<!--登陆成功的跳转页面-->
<property name="successUrl" value="/dept/main"/>
<!--没有权限跳转的页面-->
<property name="unauthorizedUrl" value="/unauthorized"/>
<!--设置哪些页面能不登陆访问,哪些页面访问需要特定权限-->
<!--可以不在这里配置,用数据库配置,通过Java代码,交给spring管理-->
<!--引入java代码的设置-->
<property name="filterChainDefinitionMap" ref="newshiroFilterForMap"/>
<property name="filters">
<map>
<entry key="kperms" value-ref="permissionFilter"/>
</map>
</property>
</bean>
<!--自定义权限过滤-->
<bean class="cn.king.aisell.shiro.AiSellPermissionsAuthorizationFilter" id="permissionFilter"/>
<!--连接java代码部分-->
<bean id="newshiroFilterForMap" factory-bean="shiroFilterForMap" factory-method="getShiroFilterForMap"/>
<bean id="shiroFilterForMap" class="cn.king.aisell.shiro.ShiroFilterForMap"/>
为了将权限设置改到数据库中,方便前端页面修改,所以不在xml中配置。通过创建一个类读取数据库来实现,这个类要交给spring管理。
public class ShiroFilterForMap { @Autowired private IPermissionService iPermissionService; public Map<String,String> getShiroFilterForMap(){ //LinkedHashMap:有序的map LinkedHashMap<String, String> shiroFilterForMap = new LinkedHashMap<>(); //模拟数据库的值 //设置游客能访问的路径 shiroFilterForMap.put("/login/login.jsp","anon"); shiroFilterForMap.put("/static/**","anon"); shiroFilterForMap.put("/easyui/**","anon"); shiroFilterForMap.put("/static/css/*","anon"); shiroFilterForMap.put("/static/js/*","anon"); shiroFilterForMap.put("/static/imgs/*","anon"); shiroFilterForMap.put("/upload/*","anon"); shiroFilterForMap.put("*.css","anon"); shiroFilterForMap.put("*.js","anon"); shiroFilterForMap.put("/login/**","anon"); //从数据库读 设置权限"perms[dept:list]" List<Permission> permissionServiceAll = iPermissionService.findAll(); permissionServiceAll.forEach(e->{ shiroFilterForMap.put(e.getUrl(),"kperms["+e.getSn()+"]"); }); //拦截所有 shiroFilterForMap.put("/**","authc"); return shiroFilterForMap; } }
拦截所有一定要放在最后。一定要记住顺序。
正常配置完了。我在这其中遇到一个问题。服务器启动报错:xxx为空值。
导致我的项目无法启动。
经过排查。我发现是,我数据库中,Url其中一栏出现了空值,导致出现空指针异常,不能正常创建bean。
标签:find dHash 跳转 页面 权限设置 哪些 xxx 过滤 dep
原文地址:https://www.cnblogs.com/kingofjava/p/10611920.html