在SpringBoot项目使用拦截器实现简单的登陆功能

在SpringBoot项目使用拦截器实现简单的登陆功能

HandlerInterceptor是SpringWebMVC的拦截器,类似于Servlet开发中的过滤器Filter,用于对请求进行拦截和处理。可以应用如下场景:
1、权限检查:如检测请求是否具有登录权限,如果没有直接返回到登陆页面。
2、性能监控:用请求处理前和请求处理后的时间差计算整个请求响应完成所消耗的时间。
3、日志记录:可以记录请求信息的日志,以便进行信息监控、信息统计等。

第一步:新建自定义拦截器

其中作为判断是否已经登录的依据user,是自定义的用户类,可以随意设置。
其中重写的3个方法:
preHandle:在请求处理之前进行调用(Controller方法调用之前)
postHandle:请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)
afterCompletion:在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作)

在这里插入图片描述

第二步:新建配置类WebConfigurer,需实现WebMvcConfigurer接口

addInterceptors方法:用来注册拦截器,我们自己写好的拦截器需要通过这里添加注册才能生效
其中:
Spring Boot 1.5版本都是靠重写WebMvcConfigurerAdapter的方法来添加自定义拦截器,消息转换器等
SpringBoot 2.0 后,该类被标记为将废弃,可以靠实现WebMvcConfigurer接口来实现自定义拦截器。
在这里插入图片描述

第三步:controller

其中,只是进行简单的测试,故login方法就没有详写,可以在此方法中取出登录表单提交的数据(SpringBoot参数同名绑定传参),然后并以此和从数据库取出的数据进行对比,如果对比成功则返回一个提示登录成功的页面,如果对比失败则提示密码错误并重定向到登录页面。
对比成功后如果需考虑访问别的页面而避免重复验证,可以在对比成功后把用户名或其他自定义的token放入Session中,退出功能则是从session中删除验证的token,并刷新页面会自动重定向至登录页面。
在这里插入图片描述

其他:

项目结构:
在这里插入图片描述
login.html:
在这里插入图片描述

发布了29 篇原创文章 · 获赞 21 · 访问量 671

猜你喜欢

转载自blog.csdn.net/xueguchen/article/details/103665761