springboot的拦截器

2022-07-21 08:45:58

1、定义拦截器方法

package com.bjpowernode.springboot.interceptor;

import com.bjpowernode.springboot.model.User;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class UserInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request,
                             HttpServletResponse response,
                             Object handler) throws Exception {
        //编写业务拦截器规则
      User user = (User) request.getSession().getAttribute("user");

      //判断是否登录
        if(null == user){
            //未登录
            response.sendRedirect(request.getContextPath() + "/user/error");
            return false;

        }
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request,
                           HttpServletResponse response,
                           Object handler, ModelAndView modelAndView) throws Exception {
        HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
    }

    @Override
    public void afterCompletion(HttpServletRequest request,
                                HttpServletResponse response,
                                Object handler, Exception ex) throws Exception {
        HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
    }
}

2、创建实体类

package com.bjpowernode.springboot.model;

public class User {
    private Integer id;
    private String username;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
}

3、之后需要xml文件声明拦截器,但这不是mvc,boot这样解决

package com.bjpowernode.springboot.config;

import com.bjpowernode.springboot.interceptor.UserInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration    //定义此类为配置文件(即相当于之前的xml文件)
public class InterceptorConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //要拦截user下的所有访问请求,
        String [] addPathPatterns = {
                "/user/**"
        };
        //需要排除的路径,不能拦截此请求
        String [] excludePathPatterns = {
                "/user/out",
                "/user/error",
                "/user/login"
        };

        registry.addInterceptor(new UserInterceptor()).addPathPatterns(addPathPatterns).excludePathPatterns(excludePathPatterns);
    }
}

4、之后就是Controller中的各种请求

  • 作者:霜喧秋
  • 原文链接:https://blog.csdn.net/qq_37753562/article/details/124300773
    更新时间:2022-07-21 08:45:58