前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第一道防线__SpringMVC配置拦截器

第一道防线__SpringMVC配置拦截器

作者头像
赵小忠
发布2018-01-24 19:21:46
4840
发布2018-01-24 19:21:46
举报
文章被收录于专栏:禁心尽力禁心尽力

这几天在公司自己开发一个小系统,但是系统的安全性也得考虑,起初没注意,赶急就光关心业务逻辑和实现效果。最后老大一出手,就把最严重的问题指出来了,他说你这根本没安全性可言,于是我试着将公司使用的spring security框架拿过来,但是在这之前我又尝试配置一下springmvc的拦截器,也可以说是网站的第一道防线。

  这里我就拿用户登录问题来说吧。

  1、首先自己手动编写一个拦截器类(自定义拦截器类),伪代码如下:

代码语言:javascript
复制
 1 public class LoginInterceptor implements HandlerInterceptor {
 3     @Override
 4     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
 5             throws Exception {
 6         LoginInfo user = (LoginInfo)request.getSession().getAttribute("info");
 7         if (user == null) {
 8             System.out.println("尚未登录,调到登录页面");
 9             response.sendRedirect("/");
10             return false;
11         }
13         return true;
14     }
16     @Override
17     public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
18             ModelAndView modelAndView) throws Exception {
19         System.out.println("postHandle");
20 
21     }
23     @Override
24     public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
25             throws Exception {
26         System.out.println("afterCompletion");
28     }
30 }

说一下这个自定义拦截器类吧,首先他要想成为一个拦截器,就必须得先继承HandlerInterceptor接口,继承该接口后必须实现3个方法。

  方法preHandel主要是请求处理之前调用,也就是将你需要把什么样的请求拦截,什么样的请求不拦截做出逻辑处理。其他俩个方法你可以不做任何处理。

 2、在springmvc核心配置文件中配置:

代码语言:javascript
复制
 1   <mvc:interceptors>
 2         <mvc:interceptor>
 3             <!-- 拦截所有URL中包含/customer/的请求 -->
 4             <mvc:mapping path="/customer/*"/>
 5             <mvc:mapping path="/task/*"/> 
 6             <mvc:mapping path="/app/*"/> 
 7             <mvc:mapping path="/user/*"/>
 8             <mvc:mapping path="/transfer/*"/>
 9             <mvc:mapping path="/cgs/*"/>
10             <mvc:mapping path="/owner/*"/>
11             <mvc:mapping path="/mortgager/*"/>
12             <!-- 不需要拦截的请求 -->
13             <mvc:exclude-mapping path="/cgs/login"/> 
14             <bean id="loginInterceptor" class="com.tgsit.cgs.interceptor.LoginInterceptor"/>
15         </mvc:interceptor>
16     </mvc:interceptors>

这里需要说明一点:配置需要拦截的请求时,如果后面没有/**,则它会拦截所有的controller。

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-05-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档