springmvc 拦截器与用户验证token

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

 <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="com.kad.authorization.AuthorizationInterceptor" />
        </mvc:interceptor>
    </mvc:interceptors>

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

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

2:写@Authorization接口

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

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

package com.kad.authorization;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 在Controller的方法上使用此注解,该方法在映射时会检查用户是否登录,未登录返回401错误
 * @see com.scienjus.authorization.interceptor.AuthorizationInterceptor
 * @author ScienJus
 * @date 2015/7/31.
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Authorization {
}

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

public class AuthorizationInterceptor extends HandlerInterceptorAdapter {

    @Resource
   private TokenManager manager;

    public boolean preHandle(HttpServletRequest request,
                             HttpServletResponse response, Object handler) throws Exception {
        //如果不是映射到方法直接通过
        if (!(handler instanceof HandlerMethod)) {
            return true;
        }
        HandlerMethod handlerMethod = (HandlerMethod) handler;
        Method method = handlerMethod.getMethod();
      //如果注明了@authorization,需要进行验证,进行验证返回401错误
        if (method.getAnnotation(Authorization.class) != null) {
               //从header中得到token
            String authorization = request.getParameter("username");//.getHeader(Constants.AUTHORIZATION);
            //验证token
            TokenModel model = manager.getToken(authorization);
    // 访问的不是下的,直接跳过
                String name = handlerMethod.getBeanType().getPackage().getName();

          /*  if (name.contains("com.kad.app.action.user")) {

                     return true;
                 }  */
      if (manager.checkToken(model)) {
     //如果token验证成功,将token对应的用户id存在request中,便于之后注入
                request.setAttribute(Constants.CURRENT_USER_ID, model.getUserId());
                return true;
            } else
            {
                response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
                return false;
            }           

        }
      return true;
    }
}

测试

@Authorization
    @RequestMapping(value="/AuthTest")

    public void Test(String username,String password  )
    {
        Userinfo _uresinfo = null;
           String gsonString = null;客户端请求先到拦截器处理方法处理一下, 如果是false 直接就返回了,如果正确才会跳到这个Test方法内

原文地址:https://www.cnblogs.com/zuochanzi/p/10966470.html

时间: 2024-08-28 23:00:09

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

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

实现用户登录权限验证 先看一下我的项目的目录,我是在intellij idea 上开发的 1.先创建一个User类 1 package cn.lzc.po; 2 3 public class User { 4 private Integer id;//id 5 private String username;//用户名 6 private String password;//密码 7 8 public Integer getId() { 9 return id; 10 } 11 12 publi

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

本例实现登陆时的验证拦截,采用SpringMVC拦截器来实现 当用户点击到网站主页时要进行拦截,用户登录了才能进入网站主页,否则进入登陆页面 核心代码 首先是index.jsp,显示链接 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <% 3 String path = request.getContextPath(); 4 St

SpringMVC之拦截器实现登录验证

今天回头看之前发的javaweb学习路线图,发现把路线图中的也学的有一半多了,不过还是路漫漫.在前面的博客中有学习过spring的aop,它利用动态代理实现,在springmvc中也是一样,今天使用HandlerInterceptor来实现登录权限验证.我们平时在做系统时有些页面是需要先登录才能访问的,一种方法是在每个请求方法中都做登录判断,这样顶多是把登录功能封装起来,以后没新增一个代码都要加上,这样很不方便.其实这里我们可以使用拦截器进行登录验证,判断是否有session,如果有sessio

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

设计思路 主要针对需要登录后操作的接口进行校验.接入层在对外暴露接口后,网页.APP.第三方等等途径进行访问接口.用户请求首先会被SpringMVC拦截器拦截到,在拦截器里第一步就是需要校验用户的登录身份(由于是分布式系统这里采用的是userId+accessToken方式来校验),登录校验通过之后再进行用户权限校验,此时会自动拦截@AuthValidate注解的method(核心),如果权限校验失败则抛出权限不足异常,否则校验通过之后再执行具体接口并返回结果. 1.自定义注解 1 packag

Struts开发一个权限验证拦截器来判断用户是否登录

开发一个权限验证拦截器来判断用户是否登录 当用户请求受保护资源时,先检查用户是否登录 如果没有登录,则向用户显示登录页面 如果已经登录,则继续操作 实现步骤 开发权限验证拦截器 在配置文件中定义拦截器并引用它 开发权限验证拦截器 public class AuthInterceptor extends AbstractInterceptor { public String intercept(ActionInvocation invocation) throws Exception { //获取

SpringMVC 拦截器理解

SpringMVC 配置拦截器 1. 作为拦截器当然是为了拦截 (这不是废话嘛) 那拦截是为了干嘛? 它可以帮我们拦截未登录用户   验证是否登录.设置日志记录.统计一些接口访问量啊 进行统一异常处理  设置一些数据啊 或者计算下应用接口方法执行效率啊 等等   2. 配置拦截器 由于用的是SpringMVC所以要知道 它是有个统一的 DispatcherServlet 控制器, 所以就不用传统的bean方式了,人家给我们提供了其他简单的方式 如下所示:  (我设置了三个方便测试用的) <!--

SpringMVC拦截器的使用

SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那样子判断当前时间是否是购票时间. 一.springMVC拦截器的实现方式 springMVC拦截器的实现一般有两种方式:第一种方式是要定义的Interceptor类要实现了Spring的HandlerInterceptor 接口.第二种方式是继承实现了HandlerInterceptor接口的类,比

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

目录 前言 重要接口及类介绍 源码分析 拦截器的配置 编写自定义的拦截器 总结 前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnblogs.com/fangjian0423/p/springMVC-introduction.html 拦截器是每个Web框架必备的功能,也是个老生常谈的主题了. 本文将分析SpringMVC的拦截器功能是如何设计的,让读者了解该功能设计的原理. 重要接口及类介绍 1. Hand

SpringMVC拦截器_1_拦截器的实现

SpringMVC interceptor:下列参考的blog文章 Spring MVC简介 SpringMVC 拦截器实现原理和登录实现 SpringMVC拦截器详解[附带源码分析] 学习SpringMVC--拦截器 ********************* 1-1 拦截器 拦截器是指通过统一拦截从浏览器发往服务器的请求来完成功能的增强. 使用场景:解决请求的共性问题(如:乱码问题,权限验证等) ===2 拦截器的实现========================== ---2-1 拦截器