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;
}
文中的代码细节不一一列举了,这里重点讨论的 * ,感兴趣的朋友可以私聊我获取其他代码。
结果
未登录的情况下,请求普通接口提示未登录。
请求登录接口。
登录后再去请求普通接口,返回正常。
-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