nan_bing_f 2017-09-23 11:21 采纳率: 0%
浏览 1666

web.xml中shiro过滤器和Struts2过滤器配置的是不是存在先后顺序问题

今天在练习一个项目时,用到了shiro框架,刚开始在web.xml中把shiro过滤器的声明放到了struts2过滤器的后面,然后在spring配置文件中注入shiro的URL拦截规则,运行时发现并没有按照预想的规则进行拦截。经过一段时间调试后,发现书上web.xml的配置是把shiro的过滤器声明放到了最前面,然后我也试着把shiro的声明放到了struts过滤器声明的前面,最后成功进行了拦截。想问一下web.xml中shiro过滤器和Struts2过滤器配置的是不是存在先后顺序问题?希望知道原理的大佬能解答一下。

spring配置文件中用到的shiro拦截规则如下:

    <!-- 配置一个bean用于创建shiro框架用的过滤器 -->
    <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
        <!-- 注入安全管理器 -->
        <property name="securityManager" ref="securityManager"></property>
        <!-- 注入当前系统登录页面 -->
        <property name="loginUrl" value="/login.jsp"></property>
        <!-- 注入登录成功页面 -->
        <property name="successUrl" value="/index.jsp"></property>
        <!-- 注入权限不足页面 -->
        <property name="unauthorizedUrl" value="/unauthorizedUrl.jsp"></property>
        <!-- 注入URL拦截规则 -->
        <property name="filterChainDefinitions">
            <value>
                /login.jsp* = anon
                /userAction_login.action = anon
                /* = authc
            </value>
        </property>
    </bean>

在页面点击登录后,会跳到index.jsp,由于在index.jsp中我用了重定向,书上说会被最后一个拦截规则拦截,需要认证通过才能访问,所以要会跳转到登录页面。而开始我在web.xml文件中吧shiro的过滤器声明放到了最后面,发现并没有被拦截,直接访问到了主页。而把shiro的声明放到struts过滤器声明的前面时,却能被正确拦截。有点不太明白。。想请教一下。

  • 写回答

1条回答 默认 最新

  • devmiao 2017-09-24 15:47
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记