首页 > 其他分享 >拦截器

拦截器

时间:2023-02-06 13:11:55浏览次数:33  
标签:控制器 拦截器 token 拦截 preHandler 客户端

解决方法:加.do;拦截.do文件

spring特点:AOP→面向切面
拦截器(基于AOP的一种机制:中途拦截):interceptor
  

 类:SignIntercer(签名的拦截器)实现公共拦截器接口→使其实现HandlerInterceptor(spring自带拦截器);将映射拦截下来
三个方法:
①:preHandler:拦截器请求控制器之前(还没到达控制器);prehander→true:通过;false:失败;(可放行可拦下来)
②:postHandle:请求到达控制器方法里面去了但还没有返回,(过滤)页面还没有渲染;(不起到真正的阻止作用)拦截下来重新处理。
③:afterCompletion:回调

 

配置拦截器:springMVC-servlet当中:

<!-- 拦截器 -->
    <mvc:interceptors>
        <!-- 对所有请求都拦截,公共拦截器可以有多个 -->
        <!-- <bean name="testInterceptor"     class="cn.zifangsky.interceptor.TestInterceptor" />     -->
        <mvc:interceptor>
            <mvc:mapping path="/**/*.do"/>    //拦截什么映射:只要后缀为.do的。客户端发出的请求带.do的
            <!-- 特定请求的拦截器只能有一个 -->
        <bean  class="com.li.practice.interceptor.SignIntercepter"         />
        </mvc:interceptor>
    </mvc:interceptors>

 

测试一下拦截器:

在preHandler中输出System.out.println("preHandler-----------");
return fasle:有拦截但是拦下来了:在拦截后,控制器中会出现sysout,并没有数据传到客户端;
return true:有拦截但是放行了:在拦截后,控制器中会出现sysout,数据传到客户端
    拿到客户端的令牌:客户端发送的请求(数据)都放在了request里。通过request调用。首先保证请求时带有token;
    http协议:header(URL请求目标地址→添加access_token),body;
    headers:{"access_token":xxxxxx}
获取token→在SignIntercer中preHandler:String token=request.getheader("access_token");sysout(token);
    验证令牌:在preHandler中:
ResultJson resultJson=userService.sign(token);
if(resultJson.getcode()==0)
    return true;

 

标签:控制器,拦截器,token,拦截,preHandler,客户端
From: https://www.cnblogs.com/bulei-210627/p/17095089.html

相关文章