如何使用SpringBoot拦截器实现登录拦截
发表于:2024-09-30 作者:千家信息网编辑
千家信息网最后更新 2024年09月30日,小编给大家分享一下如何使用SpringBoot拦截器实现登录拦截,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!可以对URL
千家信息网最后更新 2024年09月30日如何使用SpringBoot拦截器实现登录拦截
小编给大家分享一下如何使用SpringBoot拦截器实现登录拦截,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
可以对URL路径进行拦截,可以用于权限验证、解决乱码、操作日志记录、性能监控、异常处理等
实现代码
新建 interceptor包
添加拦截器代码
package com.qcby.interceptor; import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.method.HandlerMethod;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession; public class LoginInterceptor implements HandlerInterceptor { @Autowired private HttpSession httpSession; //Controller逻辑执行之前 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("preHandle...."); String uri = request.getRequestURI(); System.out.println("当前路径"+uri); /** * HandlerMethod=>Controller中标注@RequestMapping的方法 * 需要配置静态资源不拦截时,添加这块逻辑 => 前后端分离项目 */ if (!(handler instanceof HandlerMethod)) { return true; } if (httpSession.getAttribute("username") == null) { // 未登录跳转到登录界面 throw new RuntimeException("no login!"); } else { return true; } } //Controller逻辑执行完毕但是视图解析器还未进行解析之前 @Override public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { System.out.println("postHandle...."); } //Controller逻辑和视图解析器执行完毕 @Override public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { System.out.println("afterCompletion...."); }}
注册,配置拦截路径和排除登录需访问路径
package com.qcby.config; import com.qcby.interceptor.LoginInterceptor;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.InterceptorRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configurationpublic class WebMvcConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(loginInterceptor()) .addPathPatterns("/**") // 那些路径不拦截 .excludePathPatterns("/user/login","/error"); } @Bean public LoginInterceptor loginInterceptor(){ return new LoginInterceptor(); }}
实现类
@RestController@RequestMapping("user")public class UserController {@Autowired private UserService userService; @Autowired private HttpSession session; @ApiOperation("用户登录接口") @RequestMapping(value="login",method = {RequestMethod.GET,RequestMethod.POST}) public Maplogin(User user){ Map map=new HashMap<>(); map.put("code",0); if(StringUtils.isEmpty(user.getUsername())||StringUtils.isEmpty(user.getPassword())){ map.put("msg","用户或密码为空!"); return map; } QueryWrapper queryWrapper=new QueryWrapper<>(); queryWrapper.eq("username",user.getUsername()) .eq("password",user.getPassword()); User user1=userService.getOne(queryWrapper); if(user1!=null){ map.put("cod",1); map.put("data",user1); session.setAttribute("username",user1.getUsername()); }else { map.put("msg","用户名或密码错误!"); } return map; }}
当我们未登录时我们不能进入拦截的页面
登录
登录之后我们就能进入hello方法了
以上是"如何使用SpringBoot拦截器实现登录拦截"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
登录
路径
逻辑
拦截器
用户
篇文章
代码
内容
密码
方法
视图
配置
不怎么
乱码
大部分
性能
接口
日志
更多
权限
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
企业网络安全的宣传稿
软件开发转电气
软件开发模型 rup
java中如何轮训数据库
防控新型网络安全风险工作总结
四川人工智能软件开发定制费用
数据库手动权限
如何学通信网络技术
自上而下和自下而上软件开发
深圳市运趣互联网科技有限公司
海淀区专业网络技术服务质量保障
癌症研究常用的数据库
无锡专业软件开发行业
数据库 学什么
三级计算机网络技术好考嘛
汕头智能软件开发设计
哪种网络技术自学简单一点
红河互联网科技哪家好
国家网络安全保障政策
贵州游戏软件开发公司有哪些
如何将本地数据库
网络安全产品架构设计
南邮无线网络技术期末考试
辽宁数据网络技术分类标准
服务端数据库面试
无线网络技术第四版
华码软件开发有限公司招聘
无锡专业软件开发行业
互联网加科技好处用英语作文
网络安全中cos