【shiro】使用shiro搭建的项目,页面引用js报错:Uncaught SyntaxError: Unexpected token

使用shiro搭建项目过程中,总是出现引用js的过程中,明明js的地址和引用路径正确,却总是报错如下:

Uncaught SyntaxError: Unexpected token <

页面代码反复的看,找不到原因。jq文件的状态码是302

【shiro】使用shiro搭建的项目,页面引用js报错:Uncaught SyntaxError: Unexpected token_第1张图片

 

 

然后,试着直接在chrome访问jq文件的地址,结果直接跳回去登录界面,才明白shiro拦截了资源文件重定向回到登录界面

 

解决问题:【shiro】使用shiro搭建的项目,页面引用js,报错:Uncaught SyntaxError: Unexpected token <

最后发现,是因为shiro的配置中,并未将js路径下的文件放进过滤规则,导致页面引用js时候出现被拦截,出现302状态码,导致重定向到了规定的未登陆页面。

这也就是为什么页面引用Js总出现上面的错误的问题~!

 

如果用自己编写过滤器,可以在里面过滤掉  /js/** 

 @Bean
    public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {
        System.out.println("ShiroConfiguration.shiroFilter()");
        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();

        // 必须设置SecuritManager
        shiroFilterFactoryBean.setSecurityManager(securityManager);

        // 拦截器
        Map filterChainDefinitionMap = new LinkedHashMap();
        Map filterMap = shiroFilterFactoryBean.getFilters();
        CaptchaFilter captchaFilter = new CaptchaFilter();
        filterMap.put("captchaFilter", captchaFilter);
        shiroFilterFactoryBean.setFilters(filterMap);


        // 配置退出过滤器,其中的具体代码Shiro已经替我们实现了
        filterChainDefinitionMap.put("/logout", "logout");

        filterChainDefinitionMap.put("/login", "captchaFilter");
        //  filterChainDefinitionMap.put("/kaptcha.jpg", "anon");//图片验证码(kaptcha框架)

        // :这是一个坑呢,一不小心代码就不好使了;
        // 
        filterChainDefinitionMap.put("/captcha", "anon");
        filterChainDefinitionMap.put("/js/**", "anon");

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

        // 如果不设置默认会自动寻找Web工程根目录下的"/login.jsp"页面
        shiroFilterFactoryBean.setLoginUrl("/login");
        // 登录成功后要跳转的链接
        shiroFilterFactoryBean.setSuccessUrl("/index");
        // 未授权界面;
        shiroFilterFactoryBean.setUnauthorizedUrl("/403");

        shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
        return shiroFilterFactoryBean;

    }

 

如果采用编写配置文件的方法,可以在value节点里面加入  /js/** = anon  即可

 
      
          
        
          
        
          
          
          
        
      
    
        
            
                /=anon
                /index.jsp=anon
                /login/login.htmls=anon
                /js/** = anon
                /**=authc 
            
        
    

你可能感兴趣的:(JAVA,spring,shiro)