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登录拦截内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
解决调用ftpClient.retrieveFileStream(String remoteFilePath)第二次读
这篇文章主要给大家介绍了关于如何解决调用ftpClient.retrieveFileStream(String remoteFilePath)第二次读取为空问题的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下2023-08-08解决MyEclipse出现the user operation is waiting的问题
今天做项目的时候每次修改代码保存后都会跳出一个框框,然后就有两个进度条,上面写the user operation is wating...小编去网上查了查解决了这个问题,下面跟大家分享一下。2018-04-04spring security 5.x实现兼容多种密码的加密方式
spring security针对该功能有两种实现方式,一种是简单的使用加密来保证基于 cookie 的 token 的安全,另一种是通过数据库或其它持久化存储机制来保存生成的 token。这篇文章主要给大家介绍了关于spring security 5.x实现兼容多种密码的加密方式,需要的朋友可以参考下。2018-01-01
最新评论