在applicationContext-security.xml配置文件当中可以设置权限的拦截
<!-- auto-config = true 则使用from-login.如果不使用该属性 则默认为http-basic(没有session).access-denied-page:出错后跳转到的错误页面;-->
<http auto-config="true" access-denied-page="/common/403.jsp">
<!-- intercept-url:拦截器,可以设定哪些路径需要哪些权限来访问. filters=none 不使用过滤,也可以理解为忽略 -->
<intercept-url pattern="/index.jsp" access="ROLE_USER" />
<intercept-url pattern="/login.jsp" filters="none" />
<intercept-url pattern="/common/**" filters="none" />
<intercept-url pattern="/script/**" filters="none" />
<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
<intercept-url pattern="/user.jsp" access="ROLE_USER" />
<!-- session-management是针对session的管理. 这里可以不配置. 如有需求可以配置. -->
<!-- id登陆唯一. 后登陆的账号会挤掉第一次登陆的账号 error-if-maximum-exceeded="true" 禁止2次登陆;
session-fixation-protection="none" 防止伪造sessionid攻击. 用户登录成功后会销毁用户当前的session.
创建新的session,并把用户信息复制到新session中. -->
<session-management session-fixation-protection="none">
<concurrency-control/>
</session-management>
<!-- login-page:默认指定的登录页面.authentication-failure-url:出错后跳转页面.default-target-url:成功登陆后跳转页面 -->
<form-login login-page="/login.jsp"
authentication-failure-url="/common/403.jsp"
default-target-url="/admin.jsp" />
<!-- logout-success-url:成功注销后跳转到的页面; -->
<logout logout-success-url="/login.jsp"/>
<http-basic />
</http>
将需要放行的动态请求设置到<intercept-url pattern="放行动态请求地址" access="permitAll">permitAll指所有登录和非登录人员都可以访问
处理这个问题的初衷是公司要求对一个项目进行单点登录改造,在登录处理的Controller层有一个回调函数,在单点登录sso系统登录后,会回调一个callBack函数,将参数从地址栏传输过来子系统,进行子系统用户名认证。因此需要放开callBack方法的映射地址的拦截。