SpringBoot登录拦截配置详解(实测可用)

 更新时间:2020年07月22日 10:39:56   作者:xqnode  
这篇文章主要介绍了SpringBoot登录拦截配置详解(实测可用),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

背景:写一个用户登录拦截,在网上找了一圈没找到好用的,于是自己试验了一下,总结出来,分享给大家。

1.自定义登录拦截器LoginInterceptor

public class LoginInterceptor implements HandlerInterceptor {

  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
  	// 这里是关键
    User loginUser = (User) request.getSession().getAttribute("user");
    if (loginUser == null) {
      // 未登录抛出异常,交给统一异常处理器处理
      throw new CustomException(ResultCode.USER_NOT_LOGIN);
    }
    return true;
  }

  @Override
  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

  }

  @Override
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

  }
}

2.在WebConfigurer中添加拦截器

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

  @Override
  public void addInterceptors(InterceptorRegistry registry) {
    //注册TestInterceptor拦截器
    registry.addInterceptor(new LoginInterceptor())
        .addPathPatterns("/**")
        // 排除登录注册等接口,注意这里的格式是 /**/xxx
        .excludePathPatterns("/**/login", "/**/register"); 
  }
}

3.登录接口

 /**
   * 登录
   * @return 用户信息
   */
public User login(UserVO userVO. HttpServlet) {
  String username = userVO.getUsername();
  String password = userVO.getPassword();

  User user = userMapper.findByUsernameAndPassword(username, password);
  // 未找到用户
  if(user == null) {
    throw new CustomException(ResultCode.USER_ACCOUNT_ERROR);
  }
  // 设置session中的用户信息
  SessionUtils.setSessionAttribute("user", user);
  return user;
}

文中的代码细节不一一列举了,这里重点讨论的拦截器,感兴趣的朋友可以私聊我获取其他代码。

结果

未登录的情况下,请求普通接口提示未登录。

请求登录接口。

登录后再去请求普通接口,返回正常。

-END-

到此这篇关于SpringBoot登录拦截配置详解(实测可用)的文章就介绍到这了,更多相关SpringBoot登录拦截内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java 实现微信和支付宝支付功能

    Java 实现微信和支付宝支付功能

    这篇文章主要介绍了Java 实现微信和支付宝支付功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • 基于Java语言的递归运算例题详解

    基于Java语言的递归运算例题详解

    一个方法在执行过程中调用自身, 就称为 "递归"。本文将通过几个例题带大家深入了解一下Java语言中的递归运算,感兴趣的可以了解一下
    2022-08-08
  • spring-spring容器中bean知识点总结

    spring-spring容器中bean知识点总结

    在本篇文章里小编给大家分享了关于spring-spring容器中bean知识点总结,有需要的朋友们可以学习下。
    2019-08-08
  • Netty分布式ByteBuf的分类方式源码解析

    Netty分布式ByteBuf的分类方式源码解析

    这篇文章主要为大家介绍了Netty分布式ByteBuf的分类方式源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • 详解spring-boot集成elasticsearch及其简单应用

    详解spring-boot集成elasticsearch及其简单应用

    本篇文章主要介绍了详解spring-boot集成elasticsearch及其简单应用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • SpringBoot如何进行参数校验实例详解

    SpringBoot如何进行参数校验实例详解

    开发过程中,后台的参数校验是必不可少的,下面这篇文章主要给大家介绍了关于SpringBoot如何进行参数校验的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-01-01
  • Java线程代码的实现方法

    Java线程代码的实现方法

    下面小编就为大家带来一篇Java线程代码的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Java两种方法计算出阶乘尾部连续0的个数

    Java两种方法计算出阶乘尾部连续0的个数

    这篇文章主要介绍了Java两种方法计算出阶乘尾部连续0的个数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Spring-cloud Feign 的深入理解

    Spring-cloud Feign 的深入理解

    这篇文章主要介绍了Spring-cloud Feign 的深入理解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • 浅谈Java解释器模式

    浅谈Java解释器模式

    这篇文章主要介绍了Java基于解释器模式实现定义一种简单的语言功能,简单描述了解释器模式的概念、功能及Java使用解释器模式定义一种简单语言的相关实现与使用技巧,需要的朋友可以参考下
    2021-10-10

最新评论