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

2 篇文章 0 订阅
1 篇文章 0 订阅

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

Uncaught SyntaxError: Unexpected token <

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

 

 

然后,试着直接在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<String, String> filterChainDefinitionMap = new LinkedHashMap<String, String>();
        Map<String, Filter> 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框架)

        // <!-- 过滤链定义,从上向下顺序执行,一般将 /**放在最为下边 -->:这是一个坑呢,一不小心代码就不好使了;
        // <!-- authc:所有url都必须认证通过才可以访问; anon:所有url都都可以匿名访问-->
        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  即可

 <!-- Shiro过滤器 -->
    <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">  
        <!-- Shiro的核心安全接口,这个属性是必须的 -->  
        <property name="securityManager" ref="securityManager"/>
        <!-- 身份认证失败,则跳转到登录页面的配置 -->  
        <property name="loginUrl" value="/index.jsp"/>
        <!-- 权限认证失败,则跳转到指定页面 -->  
        <property name="unauthorizedUrl" value="/error.jsp"/>  
        <!-- Shiro连接约束配置,即过滤链的定义 -->  
        <property name="filterChainDefinitions" ref="filterChainDefinitions" />
    </bean>  
    <bean name="filterChainDefinitions" class="java.lang.String">
        <constructor-arg>
            <value>
                /=anon
                /index.jsp=anon
                /login/login.htmls=anon
                /js/** = anon
                /**=authc 
            </value>
        </constructor-arg>
    </bean>
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值