第一道防线__SpringMVC配置拦截器
这几天在公司自己开发一个小系统,但是系统的安全性也得考虑,起初没注意,赶急就光关心业务逻辑和实现效果。最后老大一出手,就把最严重的问题指出来了,他说你这根本没安全性可言,于是我试着将公司使用的spring security框架拿过来,但是在这之前我又尝试配置一下springmvc的拦截器,也可以说是网站的第一道防线。
这里我就拿用户登录问题来说吧。
1、首先自己手动编写一个拦截器类(自定义拦截器类),伪代码如下:
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
LoginInfo user = (LoginInfo)request.getSession().getAttribute("info");
if (user == null) {
System.out.println("尚未登录,调到登录页面");
response.sendRedirect("/");
return false;
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("postHandle");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
System.out.println("afterCompletion");
}
}
说一下这个自定义拦截器类吧,首先他要想成为一个拦截器,就必须得先继承HandlerInterceptor接口,继承该接口后必须实现3个方法。
方法preHandel主要是请求处理之前调用,也就是将你需要把什么样的请求拦截,什么样的请求不拦截做出逻辑处理。其他俩个方法你可以不做任何处理。
2、在springmvc核心配置文件中配置:
<mvc:interceptors>
<mvc:interceptor>
<!-- 拦截所有URL中包含/customer/的请求 -->
<mvc:mapping path="/customer/*"/>
<mvc:mapping path="/task/*"/>
<mvc:mapping path="/app/*"/>
<mvc:mapping path="/user/*"/>
<mvc:mapping path="/transfer/*"/>
<mvc:mapping path="/cgs/*"/>
<mvc:mapping path="/owner/*"/>
<mvc:mapping path="/mortgager/*"/>
<!-- 不需要拦截的请求 -->
<mvc:exclude-mapping path="/cgs/login"/>
<bean id="loginInterceptor" class="com.tgsit.cgs.interceptor.LoginInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
这里需要说明一点:配置需要拦截的请求时,如果后面没有/**,则它会拦截所有的controller。
还有,很多哥们儿会忽略的一点就是没有配置不需要拦截的请求,当然我们网站的注册和登录请求时不能被拦截的,所以记得在配置的时候顺带配置一下不需要拦截的请求。
第一道防线__SpringMVC配置拦截器的更多相关文章
- spring原拦截器配置与新命名空间mvc:interceptors配置拦截器对照与注意事项
原先,我们是这么配置拦截器的 <bean id="openSessionInViewInterceptor"class="org.springframework.o ...
- SpringBoot配置拦截器
[配置步骤] 1.为类添加注解@Configuration,配置拦截器 2.继承WebMvcConfigurerAdapter类 3.重写addInterceptors方法,添加需要拦截的请求 @Co ...
- Spring Boot配置拦截器及实现跨域访问
拦截器功能强大,能够深入方法前后,常应用于日志记录.权限检查和性能检测等,几乎是项目中不可或缺的一部分,本文就来实现Spring Boot自定义拦截器的配置. 理论指导 问:Spring Boot怎么 ...
- SpringMvc配置拦截器
SpringMVC可以通过配置拦截器,进行url过滤等处理. 在spring-mvc.xml的配置文件中,如下示: 其中,在<mvc:interceptors>中可以配置多个拦截器< ...
- springboot 配置拦截器
1 有这样一个需求 服务端对部分请求URL需要验证身份.如果验证错误,停止请求,按照既定的数据格式返回:如果验证正确,继续执行请求. 2 需要这样做 1. 将指定格式的请求拦截下来: 2. 获取参数, ...
- Struts_登录练习(配置拦截器)
需求:类似过滤器看有没有登录,没登陆就返回登陆界面,在上文基础上实现 1.新建拦截器 2.配置拦截器 3.完成.
- SpringBoot——配置类实现WebMvcConfigurer接口来配置拦截器、view-controller、视图解析器等
目的:为了保留SpringBoot对SpringMVC自动配置,另外我们还想要做一些自己拓展的功能 如何做扩展? 以配置view-controller实现跳转为例: 原先在SpringMvc中我们写v ...
- Spring实现自定义注解并且配置拦截器进行拦截
有时候我们会自定义注解,并且需要配置拦截器对请求方法含有该自定义注解的方法进行拦截操作 自定义注解类 NeedToken.java import java.lang.annotation.Docume ...
- springmvc 配置拦截器
package com.aaa.zxf.interceptor; import org.springframework.boot.autoconfigure.SpringBootApplication ...
随机推荐
- 【转载】 C语言命令行小猪佩奇
// ASCII Peppa Pig by Milo Yip #include <math.h> #include <stdio.h> #include <stdlib. ...
- git遇到问题
简介 这里记录git使用过程中所涉及的问题,记录下解决方案. git 本地项目上传远程仓库[github] 已在远程建好仓库,在本地项目根目录下 $ git init $ git add . $ gi ...
- React onPaste 获取粘贴板的值
React 中, 获取 粘贴板的值, 使用下面的方法 console.log(e.clipboardData.getData('Text')); 如果是 JS 中的 onpaste 事件, 则使用 v ...
- Eclipse解决运行、启动缓慢问题思路
我的Eclipse近几天运行时速度奇慢,具体表现为: 1.只要ECLIPSE启动后,硬盘灯就狂闪,不停的读盘: 2.发布TOMCAT经常在0%: 3.偶尔CPU占满: 网上讲优化的文章无数,但是总是有 ...
- Keepalived + haproxy双机高可用方案
上一篇文章已经讲到了keepalived实现双机热备,且遗留了一个问题 master的网络不通的时候,可以立即切换到slave,但是如果只是master上的应用出现问题的时候,是不会 主动切换的. 上 ...
- 【转载】Java 集合框架
http://wangkuiwu.github.io/2012/02/03/collection-03-arraylist/ 网上比较全的Java集合框架教程. 注:transient是Java语言的 ...
- 4027. [HEOI2015]兔子与樱花【树形DP】
Description 很久很久之前,森林里住着一群兔子.有一天,兔子们突然决定要去看樱花.兔子们所在森林里的樱花树很特殊.樱花树由n个树枝分叉点组成,编号从0到n-1,这n个分叉点由n-1个树枝连接 ...
- POJ3977 Subset
嘟嘟嘟 这个数据范围显然是折半搜索. 把序列分成两半,枚举前一半的子集,存下来.然后再枚举后一半的子集,二分查找. 细节: 1.最优解可能只在一半的子集里,所以枚举的时候也要更新答案. 2.对于当前结 ...
- 权限管理系统---django版本
权限管理:在简单的系统中,以往都是将每个权限赋予给用户,每个用户访问某个功能,通过查询db来判断用户是否有权限.但是如下情景不能够解决: 1.随着系统的复杂,权限较为复杂的时候,权限条目也多,系统角色 ...
- 目前.NET Core创建Windows Service比较好的一个开源框架:DasMulli.Win32.ServiceUtils
新建一个.NET Core控制台程序,搜索并下载Nuget包:DasMulli.Win32.ServiceUtils GitHub 链接及使用指南 Write a windows service us ...