• Springboot 拦截器


    1.介绍

    面向切面编程——AOP 的具体实现

    你可以使用 Interceptor 来执行某些任务,例如在 Controller 处理请求之前编写日志,添加或更新配置……
    在 Spring中,当请求发送到 Controller 时,在被Controller处理之前,它必须经过 Interceptors(0或多个)。
    Spring Interceptor是一个非常类似于Servlet Filter 的概念 。

    单点登录使用

    2.interceptor作用

    日志记录:记录请求信息的日志,以便进行信息监控、信息统计、计算 PV(Page View)等;
    权限检查:如登录检测,进入处理器检测是否登录;
    性能监控:通过拦截器在进入处理器之前记录开始时间,在处理完后记录结束时间,从而得到该请求的处理时间。(反向代理,如 Apache 也可以自动记录)
    通用行为:读取 Cookie 得到用户信息并将用户对象放入请求,从而方便后续流程使用,还有如提取 Locale、Theme 信息等,只要是多个处理器都需要的即可使用拦截器实现。

    3.自定义interceptor

    重写prehandle,方法在请求处理之前被调用

    public class FamaInterceptor implements HandlerInterceptor {
    
        private SpringSSOInterceptor ssoInterceptor;
    
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            boolean ok = ssoInterceptor.preHandle(request, response, handler);
            if (ok){
                return true;
            }
            response.setStatus(521);
            return false;
        }
    
    
        public SpringSSOInterceptor getSsoInterceptor() {
            return ssoInterceptor;
        }
    
        public void setSsoInterceptor(SpringSSOInterceptor ssoInterceptor) {
            this.ssoInterceptor = ssoInterceptor;
        }
    }
    

    4.配置拦截器使他生效

    @Configurationpublic class WebConfig implements WebMvcConfigurer {    
    @Override    
    public void addInterceptors(InterceptorRegistry registry) {
    				registry.addInterceptor(new FamaInterceptor()).addPathPatterns("/**").excludePathPatterns("/admin/oldLogin");
    											}
    }
    
  • 相关阅读:
    "Principles of Reactive Programming" 之<Actors are Distributed> (3)
    Clojure语法学习-循环
    建立Clojure开发环境-使用IDEA和Leiningen
    速查笔记(Linux Shell编程<上>)
    Exception thrown in catch and finally clause
    linux fork的缺点
    redhat6.4 install 163 source
    linux /etc/hosts 配置问题
    linux sed
    STL 源码分析 (SGI版本, 侯捷著)
  • 原文地址:https://www.cnblogs.com/PythonOrg/p/14836260.html
Copyright © 2020-2023  润新知