第一道防线__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 ...
随机推荐
- Spring Boot+MyBabits静态连接多个数据库
1.修改.properties first.datasource.jdbc-url=jdbc:mysql://localhost/forwind first.datasource.username=r ...
- September 10th 2017 Week 37th Sunday
Dream most deep place, only then the smile is not tired. 梦的最深处,只有微笑不累. Everyday I expect I can go to ...
- bin/hdfs dfs命令
appendToFile Usage: hdfs dfs -appendToFile <localsrc> ... <dst> 追加一个或者多个文件到hdfs制定文件中.也可以 ...
- PHP最全防止sql注入方法
(1)mysql_real_escape_string -- 转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集 使用方法如下: $sql = "select count ...
- 【原创】python __all__ 的用法
1. 写自己的module或者package的时候需要控制向外暴露的名字, 这个很有用, 防止名字污染
- Jupyter Notebook的使用
命令模式 (按键 Esc 开启) Enter : 转入编辑模式 Shift-Enter : 运行本单元,选中下个单元 Ctrl-Enter : 运行本单元 Alt-Enter : 运行本单元,在其下插 ...
- AOP的本质
AOP的本质是HOOK: HOOK的本质是:新函数包含原函数或新函数替换原函数: 需要解决的问题: 1.新函数的生成: 2.新函数的调用机制: 3.原函数的调用机制: 新函数的生成: 1.将已有的动态 ...
- 浏览器地址栏运行JavaScript代码
这个很多人应该还是知道的,在浏览器地址栏可以直接运行JavaScript代码,做法是以javascript:开头后跟要执行的语句.比如: javascript:alert('hello from ad ...
- 线性dp
线性dp应该是dp中比较简单的一类,不过也有难的.(矩乘优化递推请出门右转) 线性dp一般是用前面的状态去推后面的,也有用后面往前面推的,这时候把循环顺序倒一倒就行了.如果有的题又要从前往后推又要从后 ...
- 【转】 java中Class对象详解和类名.class, class.forName(), getClass()区别
Class对象的生成方式如下: 1.类名.class 说明: JVM将使用类装载器, 将类装入内存(前提是:类还没有装入内存),不做类的初始化工作.返回Class的对象 2.Cla ...