2020-04-25 孙小北

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

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

一、拦截器HandlerInterceptor

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

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

1.png

二、配置WebMvcConfig

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

2.png

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

三、完善登录功能

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

3.png

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

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

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

四、重启项目,测试

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

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

五、代码解耦

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

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

5代码解耦.png

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

6.png

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

7.png

六、全局错误拦截

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

9全局错误拦截器.png

编辑:孙小北

本文地址: https://www.xiaowangyun.com/wyblog/detail/?id=1138

版权归属: www.xiaowangyun.com   转载时请以链接形式注明出处

0 条评论

快来评论

物以类聚

最新评论

2017-10-06

一辈子不长,只有珍惜了,才不至于后悔。

2017-10-06

懂得感恩,才能走得更远。

标签云

归档

取消

感谢您的支持,您的每一次打赏都是一次鼓励!

扫码支持
每一次支持,都是不懈的动力

打开支付宝扫一扫,即可进行扫码打赏哦