SpringBoot项目中设置拦截器

SpringBoot项目中设置拦截器,分为两步:1.创建拦截器类;2.编写配置类来完成拦截器的配置

由于需要登录后才可以执行操作比较多,所以,应该使用拦截器进行统一处理!在处理过程中,如果获取不到用户的登录信息,则可以将用户的请求重定向到登录页面!

1.创建连接器类

具体实现步骤:在项目的根包下创建一个interceptor包 -> 包中创建一个LoginInterceptor类 ->实现接口HandlerInterceptor->重写接口中的preHandle方法->在方法中进行判断实现代码->具体代码如下:

public class LoginInterceptor implements HandlerInterceptor {

    //重写preHandle方法
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //如果session中的uid为空,就说明还没有登录,则重定向到登录页面,阻止进入其他页面。
        //false:阻止;true:放行。
        if(request.getSession().getAttribute("uid")==null) {
            response.sendRedirect("/web/login.html");
            return false;
        }
        return true;
    }
}

注意:false:表示阻止;true:表示放行。这段判断代码的解释就是:当session中‘uid’为空时,说明用户尚未登录,然后重定向到登录页面,重新登录;否则就放行。

2.编写配置类来完成拦截器的配置

说明:在SpringBoot项目中,没有XML文件用于配置,所以需要编写配置类来完成拦截器的配置。
具体实现步骤:在根包下创建一个名为’config’的包->在包中声明一个名为‘ InterceptorConfigurer’的类,类名随意,但尽量见名知意->在类的声明之前添加注解‘@Configuration’,添加了注解框架才会读取这个类->实现接口‘WebMvcConfigurer’->重写‘addInterceptors’方法,注册拦截器->在方法中实现具体代码,如下:
//在根包下创建的config包中,声明类之前要添加注解,框架才会调用这个类完成的配置。

@Configuration
public class InterceptorConfigurer implements WebMvcConfigurer {

    //重写方法,注册拦截器(InterceptorRegistry)
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //创建拦截器类
        HandlerInterceptor interceptor=new LoginInterceptor();

        List<String> patterns=new ArrayList<>();
        patterns.add("/users/reg");
        patterns.add("/users/login");
        patterns.add("/web/register.html");
        patterns.add("/web/login.html");
        patterns.add("/bootstrap3/**");
        patterns.add("/css/**");
        patterns.add("/images/**");
        patterns.add("/js/**");
        //注册拦截器类,添加黑名单(addPathPatterns("/**")),‘/*’只拦截一个层级,'/**'拦截全部
        // 和白名单(excludePathPatterns("List类型参数")),将不必拦截的路径添加到List列表中
        registry.addInterceptor(interceptor).addPathPatterns("/**").excludePathPatterns(patterns);
    }
}

注意:

  • 在方法中注册拦截器类‘registry.addInterceptor(interceptor)’,之前要新建上面创建的拦截器类‘LoginInterceptor’;然后再添加黑名单和白名单,黑名单内容是要拦截的路径,白名单是不用拦截的路径
  • == 黑名单‘addPathPatterns’中的‘/**’,代表全部层级的内容,表示要拦截全部内容。‘/*’:值代表一个层级。==
  • 白名单‘excludePathPatterns(“List类型参数”)’,参数内容是List类型的参数,这样能将要放行的路径添加到List列表中。
  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一段简单的Spring Boot拦截器示例代码: ```java @Component public class CustomInterceptor implements HandlerInterceptor { @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // This method is called after the handler is executed and after the view is rendered } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // This method is called after the handler is executed, but before the view is rendered } @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // This method is called before the handler is executed. Here, we can perform web request logging or validation return true; // If we return false from here, the request will be rejected } } ``` 这是一个名为 CustomInterceptor 的自定义拦截器,在 preHandle() 方法进行了请求的前置处理,postHandle() 和 afterCompletion() 方法分别用于处理请求完成后的操作。同时,我们还需要将该拦截器注册到 Spring Boot 应用,方法如下: ```java @Configuration public class AppConfig implements WebMvcConfigurer { @Autowired private CustomInterceptor customInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(customInterceptor); } } ``` 这样就可以将 CustomInterceptor 注册进入 Spring Boot 应用,并对指定的请求进行拦截处理了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值