shiro1.4根据url拦截可以生效但是根据路径拦截就不生效

 //设置控制map
        Map<String,String> filterChainDefinitionMap = new LinkedHashMap<>();
        //配置不会被拦截的链接  顺序判断
//        filterChainDefinitionMap.put("/static/sss.xml","authc");
        //配置退出,过滤器,其中的具体的退出代码Shiro已经以我们实现了
//        filterChainDefinitionMap.put("/logout","logout");

        filterChainDefinitionMap.put("/user/*","authc");

        //特别注意,过滤链定义,从上向下顺序执行,一般讲/**放在最边,这是一个坑呢,一不小心代码就不好使了
        //所有的url都必须认证通过后才可以访问,anon所有url都可以匿名访问
//        filterChainDefinitionMap.put("/**","annon")

        shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);

未解决。。。
查看源码,manager.createChain(url, chainDefinition);最终以url的形式被FilterChainManager 收录,但是我看别人的代码明明可以实现路径拦截的

原来shiro只可以根据url进行拦截,而不能根据目录进行拦截 如有异议还请留言(我也在想一个问题,如果既可以根据目录进行拦截也可以根据url进行拦截那很容易造成冲突,语言不准确造成我找了半天没找到答案)

    protected FilterChainManager createFilterChainManager() {
        DefaultFilterChainManager manager = new DefaultFilterChainManager();
        Map<String, Filter> defaultFilters = manager.getFilters();
        Iterator var3 = defaultFilters.values().iterator();

        while(var3.hasNext()) {
            Filter filter = (Filter)var3.next();
            this.applyGlobalPropertiesIfNecessary(filter);
        }

        Map<String, Filter> filters = this.getFilters();
        String name;
        Filter filter;
        if (!CollectionUtils.isEmpty(filters)) {
            for(Iterator var10 = filters.entrySet().iterator(); var10.hasNext(); manager.addFilter(name, filter, false)) {
                Entry<String, Filter> entry = (Entry)var10.next();
                name = (String)entry.getKey();
                filter = (Filter)entry.getValue();
                this.applyGlobalPropertiesIfNecessary(filter);
                if (filter instanceof Nameable) {
                    ((Nameable)filter).setName(name);
                }
            }
        }

        Map<String, String> chains = this.getFilterChainDefinitionMap();
        if (!CollectionUtils.isEmpty(chains)) {
            Iterator var12 = chains.entrySet().iterator();

            while(var12.hasNext()) {
                Entry<String, String> entry = (Entry)var12.next();
                String url = (String)entry.getKey();
                String chainDefinition = (String)entry.getValue();
                manager.createChain(url, chainDefinition);
            }
        }

        return manager;
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值