shiro setFilterChainDefinitionMap 多个路径不生效问题

shiro setFilterChainDefinitionMap 多个路径不生效问题


		Map<String, String> map = new HashMap<>();
		
		map.put("/cms/admin/**", "perms[admin]");
		
		map.put("/cms/appeal/**", "perms[appeal]");
	
		map.put("/cms/broadcast/**", "perms[broadcast]");
	
		map.put("/cms/notice/**", "perms[notice]");
	
		map.put("/cms/auth/premier/**", "perms[premier]");

		map.put("/cms/auth/merchant/**", "perms[merchant]");

		map.put("/cms/appupdate/**", "perms[appupdate]");
	
		map.put("/cms/bb_order/**", "perms[bb_order]");
	
		map.put("/cms/otc_order/**", "perms[otc_order]");
	
		map.put("/cms/user/**", "perms[user]");

		map.put("/cms/permission/**", "authc");

		map.put("/cms/tt/**", "authc");
	
		map.put("/cms/loginOut", "authc"); 
	
		map.put("/cms/login", "anon");

		map.put("/**", "anon"); 

		//没登录访问controller页面
		shiroFilterFactoryBean.setLoginUrl("/cms/notLogin");
		shiroFilterFactoryBean.setUnauthorizedUrl("/cms/notAuth");

		shiroFilterFactoryBean.setFilterChainDefinitionMap(map);


上面拦截了十几个路径,每个路径需要有不同的权限才能访问,最后还有其他接口 用 /**表示,不进行拦截,但是,遇到的问题是,总有几个路径无法进行拦截,
后来找到了原因,我们将路径加入到map中,在setFilterChainDefinitionMap,可hashmap是无序的,到filter里面顺序就变了,可能最后一个/**会先遍历到
所以直接不需要权限了,拦截失败。这里将hashmap换成LinkedHashMap,解决问题

  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值