测试Shiro过滤器和DispatcherServlet的调用顺序

web.xml

 1     <!--shiro filter-->
 2     <filter>
 3         <filter-name>shiroFilter</filter-name>
 4         <filter-class>
 5             org.springframework.web.filter.DelegatingFilterProxy
 6         </filter-class>
 7     </filter>
 8     <filter-mapping>
 9         <filter-name>shiroFilter</filter-name>
10         <url-pattern>/shiro/*</url-pattern>
11     </filter-mapping> 

applicationContext.xml

 1  <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
 2         <property name="securityManager" ref="securityManager"/>
 3         <!-- override these for application-specific URLs if you like:
 4         <property name="loginUrl" value="/login.jsp"/>
 5         <property name="successUrl" value="/home.jsp"/>
 6         <property name="unauthorizedUrl" value="/unauthorized.jsp"/> -->
 7         <!-- The ‘filters‘ property is not necessary since any declared javax.servlet.Filter bean  -->
 8         <!-- defined will be automatically acquired and available via its beanName in chain        -->
 9         <!-- definitions, but you can perform instance overrides or name aliases here if you like: -->
10         <!-- <property name="filters">
11             <util:map>
12                 <entry key="anAlias" value-ref="someFilter"/>
13             </util:map>
14         </property> -->
15         <property name="filterChainDefinitions">
16             <value>
17                 # some example chain definitions:
18                 /admin/** = authc, roles[admin]
19                 /docs/** = authc, perms[document:read]
20                 /shiro/** = authc
21                 # more URL-to-FilterChain definitions here
22             </value>
23         </property>
24     </bean>

测试url:  /shiro/test

结果: shiroFilter - 》DispatcherServlet

测试url:  /other/test

结果: DispatcherServlet

结论:当请的url能被shiro过滤器匹配到时,先走shiro过滤器,再走DispatcherServlet ;

     否则只走DispatcherServlet。

原文地址:https://www.cnblogs.com/john123/p/11173370.html

时间: 2024-10-11 03:44:58

测试Shiro过滤器和DispatcherServlet的调用顺序的相关文章

Activity生命周期方法的调用顺序工程与测试日志

下面为测试activity的方法的执行顺序   工程与测试资源地址 android工程 AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.finalizetest"

c++学习笔记5,多重继承中派生类的构造函数与析构函数的调用顺序(二)

现在来测试一下在多重继承,虚继承,MI继承中虚继承中构造函数的调用情况. 先来测试一些普通的多重继承.其实这个是显而易见的. 测试代码: //测试多重继承中派生类的构造函数的调用顺序何时调用 //Fedora20 gcc version=4.8.2 #include <iostream> using namespace std; class base { public: base() { cout<<"base created!"<<endl; }

jquery更改ready方法调用顺序,在ready之后执行Js代码

*/--> jquery更改ready方法调用顺序,在ready之后执行Js代码 Table of Contents 问题描述 在所有的ready方法之后执行上面的方法 重写$.fn.ready方法 查看$.fn.ready的源码定义 修改自己的$.fn.ready 闭包,增加安全性 问题描述 我想要控制Input,回车不提交表单,思路如下: $(function(){ $("form input").on("keypress",function(event)

Unity3D中关于场景销毁时事件调用顺序的一点记录

先说一下我遇到的问题,我弄了一个对象池管理多个对象,对象池绑定在一个GameObject上,每个对象在OnBecameInvisible时会进行回收(即移出屏幕就回收),但是当场景切换或停止运行程序时场景中如果还有待回收的对象,就会报错,报错显示的信息为,我的对象池GameObject已经被销毁了云云,因为回收的对象我会把他们作为绑定了对象池的GameObject的子级来方便管理. 所以唯一的可能就是脚本方法调用顺序不可控,即不同GameObject的OnBecameInvisible在其它Ga

继承中参数传递及调用顺序

一.简单派生类的构造函数传参 C++语言的继承特性,指子类可以继承父类的属性和行为,并可以重新定义或添加新的属性和行为.父类中为private型的属性和行为虽然被继承,但是子类中仍不能访问.在继承机制下,构造函数是不能被继承的,所以基类构造函数的参数要由子类构造函数传! 单一继承的子类构造函数的声明(.h中)形式为: 派生类构造函数名(参数总表) (); 单一继承的子类构造函数的定义(.cpp中)形式为: 派生类名::派生类构造函数名(参数总表) : 基类构造函数名 (参数名表) { 派生类新增

自定义控件的初次建立的时候方法调用顺序

package com.football.app.view; import android.content.Context; import android.graphics.Canvas; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.widget.Button; /**  * 

Java对象创建阶段的代码调用顺序

在创建阶段系统通过下面的几个步骤来完成对象的创建过程 为对象分配存储空间 开始构造对象 从超类到子类对static成员进行初始化 超类成员变量按顺序初始化,递归调用超类的构造方法 子类成员变量按顺序初始化,子类构造方法调用 本文重点演示第三步到第五步: Grandpa类 1 package com.xinye.test; 2 3 public class Grandpa { 4 { 5 System.out.println("执行Grandpa的普通块"); 6 } 7 static

async 与 await 线程调用顺序

用async做一个多线程下载并在datagridview中即时更新,运行时在达到4个线程同时下载时界面卡顿,多次尝试后是不知道async与await线程调用顺序造成. 进入async方法后在调用await之前代码都在主线程(调用线程)中运行,调用await时及之后的async方法代码将另起线程运行该部分代码,而主线程在遇到await后回到主线程继续执行async后的代码. 将async方法通过声明委托后用begininvoke调用后解决.

讨论printf和cout的参数调用顺序

这里纠正在网络上看到的几个错误,以下给出正确的观点: (1)printf和cout都是有缓冲机制的.(有人认为printf是没有缓冲区的) (2)printf和cout函数对参数的调用顺序在c/c++中是未定义的.(有人认为它们读入的顺序是由右向左,输出顺序是由左到右,类似于栈) 基于以上错误的认识,看下列程序,有人会得到错误的输出的结果. #include <stdio.h> #include <iostream> using namespace std; int main()