这几天在公司自己开发一个小系统,但是系统的安全性也得考虑,起初没注意,赶急就光关心业务逻辑和实现效果。最后老大一出手,就把最严重的问题指出来了,他说你这根本没安全性可言,于是我试着将公司使用的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。

  还有,很多哥们儿会忽略的一点就是没有配置不需要拦截的请求,当然我们网站的注册和登录请求时不能被拦截的,所以记得在配置的时候顺带配置一下不需要拦截的请求。

最新文章

  1. 通过一组RESTful API暴露CQRS系统功能
  2. APP性能测试之卡顿比(FPS)
  3. Mysql复合索引
  4. c++截取英文和汉字(单双字节)混合字符串
  5. HTML form enctype 属性试验
  6. SQLQuery 实现别名映射
  7. Java中数组的快排
  8. react 全局面包屑
  9. poj 2187 凸包加旋转卡壳算法
  10. Scala单例对象、伴生对象实战详解
  11. [转]numpy中的matrix矩阵处理
  12. Ubuntu下使用rpm 软件包
  13. java基础07 多线程
  14. Redis面试点
  15. Codeforces 977D: Divide by three, multiply by two(暴力)
  16. Git 中 pull 和 clone 的区别
  17. UTF8最好不要带BOM
  18. swoole_table测试
  19. 区块链相关在线加解密工具(非对称加密/hash)
  20. C#连接SQL Server测试

热门文章

  1. scala抽象类实战
  2. apt-spy来获得适合自己的源,适用于UBUNTU/Debian
  3. Regular Expression Patterns
  4. eclipse异常关闭,无法启动tomcat解决办法
  5. openstack镜像制作思路、指导及问题总结
  6. Python之Flask框架使用
  7. 《You dont know JS》强制类型转换
  8. python redis 的基本操作指令
  9. UVA - 11927 Games Are Important (SG)
  10. SQLSERVER存储过程语法具体解释