Spring boot设置登录拦截器

应用场景

当我们在逛淘宝或者其他网站上是,有一些功能是我们在未登录状态时是不能够去使用的,这种情况就是因为设置了拦截器,拦截器的使用可以让我们的网站或其他项目更加的安全且合理。

相关实现

首先我们需要自己创建一个拦截器类

public class LoginInterceptor implements HandlerInterceptor {

  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
      throws Exception {
    System.out.println("进入拦截器uri:"+request.getRequestURI());
    /**
     *验证用户是否登陆了
     * */
    boolean r = false;
    if(!r){
    return flase;
    }
    return true;
  }
}

这是我们一个简单的拦截器类的实现
需要我们注意的是这个类需要实现 HandlerInterceptor接口,这个接口中分别有三种方法

  default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    return true;
  }

  default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
  }

  default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
  }

我们实现的值第一种方法,该方法在业务处理器处理请求的时候被调用,可用于权限验证。
热知识:

可以发现我们自己做的拦截器实现了HandlerInterceptor,但没有重写该接口的所有方法却没有报错
,这是jdk8的新特性,HandlerInterceptor的方法都由default修饰,及时不重写也不会报错。

三个参数的含义:

request :经过spring封装的请求对象,包含请求地址,头,参数等信息
response:经过spring封装的响应对象包含输入流, 响应body类型等信息
handler,是指controller的@Controller注解下的"完整"方法名, 是包含exception等字段信息的

接下来我们
创建一个WebConfigMvc类

@Configuration
public class WebConfigMvc implements WebMvcConfigurer {

@Override
public void addInterceptors(InterceptorRegistry registry){
  //注册自定义拦截器
  registry.addInterceptor(loginInterceptor())
      //先确定拦截哪些路径 /**代表所有
      .addPathPatterns("/**")
      //确定哪些路径不拦截
      .excludePathPatterns("");
}
@Bean
public LoginInterceptor loginInterceptor() { return new LoginInterceptor(); }
}

这个类实现WebMvcConfigurer 接口
我们重写接口中的addInterceptors方法来加一个自定义拦截器

registry.addInterceptor() 中写我们定义的拦截器
.addPathPatterns("/**") 中写我们需要拦截的路径
 .excludePathPatterns("") 中写不需要拦截的路径

这样一个拦截器就大功告成了
需要注意的是preHandle方法里的r需要自己去设计条件动态的改变的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值