1:springmvc 配置文件中添加拦截器,当然首先要有拦截后交给哪个类处理也要写上

  1. <mvc:interceptors>
  2. <mvc:interceptor>
  3. <mvc:mapping path="/**"/>
  4. <bean class="com.kad.authorization.AuthorizationInterceptor" />
  5. </mvc:interceptor>
  6. </mvc:interceptors>

以上 path=/**代表所有文件夹目录  .一般这么写就能拦截所有的请求了

  1. <bean class="com.kad.authorization.AuthorizationInterceptor" /> 这个是处理所拦截的类

2:写@Authorization接口

就是下边几句.这个接口后来总结 就是告诉编译器这是个注解需要的接口,   访客访问到方法时,上边带上这个注解的, 在拦截处理方法中能拦截这些带注解的方法,并做相关处理

就像强制访客访问带了胸牌@Authorization 的方法,要做一次token验证的步骤,那些不戴@Authorization,又符合拦截规则的,就不做token验证,实际应用中,比如login register 等服务是不需要验证token的.当然项目需求不一样.所设置的规则不一样

  1. package com.kad.authorization;
  2.  
  3. import java.lang.annotation.ElementType;
  4. import java.lang.annotation.Retention;
  5. import java.lang.annotation.RetentionPolicy;
  6. import java.lang.annotation.Target;
  7.  
  8. /**
  9. * 在Controller的方法上使用此注解,该方法在映射时会检查用户是否登录,未登录返回401错误
  10. * @see com.scienjus.authorization.interceptor.AuthorizationInterceptor
  11. * @author ScienJus
  12. * @date 2015/7/31.
  13. */
  14. @Target(ElementType.METHOD)
  15. @Retention(RetentionPolicy.RUNTIME)
  16. public @interface Authorization {
  17. }

3:在处理类中处理添加了@Authorization  注解的  request请求, 一般来说验证token 正确返回true 错误返回false 一般就是401的错误

  1. public class AuthorizationInterceptor extends HandlerInterceptorAdapter {
  2.  
  3. @Resource
  4. private TokenManager manager;
  5.  
  6. public boolean preHandle(HttpServletRequest request,
  7. HttpServletResponse response, Object handler) throws Exception {
  8. //如果不是映射到方法直接通过
  9. if (!(handler instanceof HandlerMethod)) {
  10. return true;
  11. }
  12. HandlerMethod handlerMethod = (HandlerMethod) handler;
  13. Method method = handlerMethod.getMethod();
  14. //如果注明了@authorization,需要进行验证,进行验证返回401错误
  15. if (method.getAnnotation(Authorization.class) != null) {
  16. //从header中得到token
  17. String authorization = request.getParameter("username");//.getHeader(Constants.AUTHORIZATION);
  18. //验证token
  19. TokenModel model = manager.getToken(authorization);
  20. // 访问的不是下的,直接跳过
  21. String name = handlerMethod.getBeanType().getPackage().getName();
  22.  
  23. /* if (name.contains("com.kad.app.action.user")) {
  24.  
  25. return true;
  26. } */
  27. if (manager.checkToken(model)) {
  28. //如果token验证成功,将token对应的用户id存在request中,便于之后注入
  29. request.setAttribute(Constants.CURRENT_USER_ID, model.getUserId());
  30. return true;
  31. } else
  32. {
  33. response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
  34. return false;
  35. }
  36.  
  37. }
  38. return true;
  39. }
  40. }

测试

  1. @Authorization
  2. @RequestMapping(value="/AuthTest")
  3.  
  4. public void Test(String username,String password )
  5. {
  6. Userinfo _uresinfo = null;
  7. String gsonString = null;
    客户端请求先到拦截器处理方法处理一下, 如果是false 直接就返回了,如果正确才会跳到这个Test方法内

springmvc 拦截器与用户验证token的更多相关文章

  1. SpringMVC拦截器实现用户登录拦截

    本例实现登陆时的验证拦截,采用SpringMVC拦截器来实现 当用户点击到网站主页时要进行拦截,用户登录了才能进入网站主页,否则进入登陆页面 核心代码 首先是index.jsp,显示链接 1 < ...

  2. springmvc拦截器实现用户登录权限验证

    实现用户登录权限验证 先看一下我的项目的目录,我是在intellij idea 上开发的 1.先创建一个User类 package cn.lzc.po; public class User { pri ...

  3. springmvc拦截器实现登录验证

    首先创建一个实体类: Customer: 1 package com.petcare.pojo.base; 2 3 import java.sql.Date; 4 import java.sql.Ti ...

  4. SpringMVC拦截器(实现登录验证拦截器)

    本例实现登陆时的验证拦截,采用SpringMVC拦截器来实现 当用户点击到网站主页时要进行拦截,用户登录了才能进入网站主页,否则进入登陆页面 核心代码 首先是index.jsp,显示链接 <%@ ...

  5. SpringMVC之拦截器实现登录验证

    今天回头看之前发的javaweb学习路线图,发现把路线图中的也学的有一半多了,不过还是路漫漫.在前面的博客中有学习过spring的aop,它利用动态代理实现,在springmvc中也是一样,今天使用H ...

  6. SpringMVC拦截器+Spring自定义注解实现权限验证

    特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...

  7. SpringMVC拦截器实现:当用户访问网站资源时,监听session是否过期

    SpringMVC拦截器实现:当用户访问网站资源时,监听session是否过期 一.拦截器配置 <mvc:interceptors> <mvc:interceptor> < ...

  8. SpringMVC拦截器的使用

    SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那 ...

  9. SpringMVC拦截器详解[附带源码分析]

    目录 前言 重要接口及类介绍 源码分析 拦截器的配置 编写自定义的拦截器 总结 总结 前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:h ...

随机推荐

  1. reverse啥时候可以用

    在做历史搜索记录的时候,当你想把最新的数据放到前面,可以用到,其实就是一个数组的反转. let array=[ '周小姐','好可爱的' ] var box=array.reverse() conso ...

  2. CFD计算过程发散诸多原因分析【转载】

    转载自: http://blog.sina.com.cn/s/blog_5fdfa7e601010rkx.html 今天探讨引起CFD计算过程中发散的一些原因.cfd计算是将描述物理问题的偏微分方程转 ...

  3. python命令行传入参数

    1.sys import sys a=eval(sys.argv[1])b=eval(sys.argv[2]) print(a+b) 1    2    3    4    5    6 evel() ...

  4. cv2.fillConvexPoly()与cv2.fillPoly()填充多边形

    cv2.fillConvexPoly() cv2.fillConvexPoly()函数可以用来填充凸多边形,只需要提供凸多边形的顶点即可. 我们来画一个三角形 img = np.zeros((1080 ...

  5. 【转】自动化框架中引入ExtentReport美化报告

    本文链接:https://blog.csdn.net/qq_30353203/article/details/82023922一.先引入三个依赖包 <dependency> <gro ...

  6. OpenJudge 计算概论1007:点评赛车

    总时间限制: 1000ms 内存限制: 65536kB描述4名专家对4款赛车进行评论1)A说:2号赛车是最好的:2)B说:4号赛车是最好的:3)C说:3号赛车不是最好的:4)D说: B说错了.事实上只 ...

  7. Java 什么是静态内部类

    #定义 Java语言允许在类中再定义类,这种在其它类内部定义的类就叫内部类. 有static关键字修饰的内部类. 比如:Pattern类中的Node类. public class Outer { pr ...

  8. 绕过WAF、安全狗知识整理

    0x01 前言 目前市场上的WAF主要有以下几类 1. 以安全狗为代表的基于软件WAF 2. 百度加速乐.安全宝等部署在云端的WAF 3. 硬件WAF WAF的检测主要有三个阶段,我画了一张图进行说明 ...

  9. Flutter Container容器组件、Text文本组件详解

    import 'package:flutter/material.dart'; void main(){ runApp(MyApp()); } class MyApp extends Stateles ...

  10. zookeeper在windows的常用命令

    首先简要讲下安装 安装jdk 安装Zookeeper. 在官网http://zookeeper.apache.org/下载zookeeper.我下载的是zookeeper-3.4.6版本. 解压zoo ...