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

作者:xqnode 时间:2023-04-22 20:52:21 

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

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;
}

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

结果

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

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

请求登录接口。

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

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

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

来源:https://blog.csdn.net/xqnode/article/details/107468535

标签:SpringBoot,登录,拦截
0
投稿

猜你喜欢

  • C#运行时相互关系浅析

    2023-09-08 00:12:43
  • Java并发程序入门介绍

    2022-03-05 12:05:26
  • Android切面编程知识点详解

    2023-05-05 04:18:04
  • Java Spring Dubbo三种SPI机制的区别

    2022-05-04 00:29:51
  • @SpringBootTest 注解报红问题及解决

    2022-08-14 23:24:51
  • Java算法实现调整数组顺序使奇数位于偶数之前的讲解

    2022-01-23 22:41:19
  • Java解析DICOM图之如何获得16进制数据详解

    2023-06-15 17:37:29
  • Java中StringUtils工具类进行String为空的判断解析

    2022-10-16 06:56:53
  • 解决Weblogic部署war找不到spring配置文件的问题

    2022-12-29 07:03:08
  • 详解Java中的ThreadLocal

    2022-08-19 17:48:43
  • SpringBoot+SpringCloud用户信息微服务传递实现解析

    2022-12-08 13:51:42
  • 实例解析Json反序列化之ObjectMapper(自定义实现反序列化方法)

    2023-11-23 18:07:25
  • C语言文件操作函数大全(超详细)

    2023-07-15 06:20:42
  • SpringCloud-Alibaba-Nacos启动失败解决方案

    2023-12-19 05:34:45
  • C#开启线程的四种示例

    2022-06-01 13:04:37
  • Java并发编程之同步容器

    2023-03-10 16:34:29
  • java实现表单必填参数验证的方法

    2023-06-16 21:41:24
  • java数据类型与二进制详细介绍

    2021-07-28 19:04:38
  • c# for循环中创建线程执行问题

    2021-09-15 20:43:23
  • springboot实现基于aop的切面日志

    2022-09-09 11:53:11
  • asp之家 软件编程 m.aspxhome.com