前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaWeb项目快速入门09之拦截器(SpringBoot+Gradle+Groovy)

JavaWeb项目快速入门09之拦截器(SpringBoot+Gradle+Groovy)

作者头像
孙小北
发布2024-01-30 15:58:30
1690
发布2024-01-30 15:58:30
举报

JavaWeb项目快速入门09之拦截器(SpringBoot+Gradle+Groovy)

JavaWeb项目快速入门04之拦截器,HandlerInterceptor拦截器最常用的就是登录和权限部分。

一、拦截器HandlerInterceptor

SpringBoot中的HandlerInterceptor常常用于拦截非法访问,比如未登录不能访问主页。如果未登录访问index.html,则跳转到登录页面。

创建包:InterInterceptor,并创建LoginlnterInterceptor实现HandlerInterceptor。主要是在prehandle方法里面实现登录验证:判断Session里面有没有登录者信息,如果有,则说明合法操作;如果没有则是不合法的,跳转到登录界面。另外增加login.html页面。

1.png
1.png

二、配置WebMvcConfig

添加完拦截器,需要配置使其生效。通过WebMvcConfigurer接口完成,另外自行补充学习MVC。具体如下:

2.png
2.png

重启项目,不管访问任何url都会跳转到登录页面。如有报错,仔细对照Demo代码,学会调试。

三、完善登录功能

完善登录相关逻辑:用户输入用户名密码,点击登录。成功则实现跳转,失败则提示错误。参照Demo完成。

3.png
3.png

注:如果出现302一直跳转到登录,检查是否配置拦截器跳过login方法

完善原来login方法,使其返回状态码。

自行补充学习前端基础知识(后期)。

四、重启项目,测试

查看是否实现登录成功跳转首页,未登录无法进入其他url。

另外补充学习:理论上,如果已经登录,再访问登录页面应该使其跳转到首页,自己试试如何实现。

五、代码解耦

之前我们把配置都直接写在代码里。根据高内聚,低耦合思想。把配置信息直接写死在代码里面显然是不明智的选择。如果要增加新的功能如注册,还需要追加白名单到数组进行配置。

(1) 修改application.yml 配置auth。增加whitelist数组,在yml里面应用 - 标记

5代码解耦.png
5代码解耦.png

(2) 修改LoginInterceptor实现读取配置login,与之前读取数据库配置类似

6.png
6.png

(3) 修改MvcConfig读取白名单路径:首先声明变量,存放whitelist。必须与配置文件中同名。然后添加注解:@ConfigurationProperties(prefix = "application.auth"),该注解是告诉Spring,刚才定义的变量是与yml中的配置相匹配。那么问题来了,excludePathPatterns中既有login,又有whitelist怎么办。这里用展开操作符(*)解决,具体可参考groovy语法 http://www.groovy-lang.org/operators.html

7.png
7.png

六、全局错误拦截

当登录失败时,我们返回的信息太多,抛出500错误。不想抛出这么多信息,或者封装之后再抛出,则用全局错误拦截器。

9全局错误拦截器.png
9全局错误拦截器.png
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-04-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JavaWeb项目快速入门09之拦截器(SpringBoot+Gradle+Groovy)
  • 一、拦截器HandlerInterceptor
  • 二、配置WebMvcConfig
  • 三、完善登录功能
  • 四、重启项目,测试
  • 五、代码解耦
  • 六、全局错误拦截
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档