SpringBoot登录拦截学习

举报
多米诺的古牌 发表于 2021/07/03 15:33:47 2021/07/03
【摘要】 1.SpringBoot框架登录拦截大多数情况,都需要配置登录拦截,在用户登录后,才能进行页面访问,而没有登录则不能访问,其中包括直接调用接口,这些都是不能访问,所有请求都需要拦截掉,只放行登录后的请求。那么如何实现登录拦截功能呢?2.SpirngBoot框架拦截器编写步骤2.1 首先编写一个类并实现implements HandlerInterceptor接口,这样就设置好了一个空的拦截器...

1.SpringBoot框架登录拦截

大多数情况,都需要配置登录拦截,在用户登录后,才能进行页面访问,而没有登录则不能访问,其中包括直接调用接口,这些都是不能访问,所有请求都需要拦截掉,只放行登录后的请求。

那么如何实现登录拦截功能呢?

2.SpirngBoot框架拦截器编写步骤

2.1 首先编写一个类并实现implements HandlerInterceptor接口,这样就设置好了一个空的拦截器。其中实现接口后,可以重写的拦截方法有如下:

2.1.1 preHandle:在请求处理之前进行调用,即在接口方法调用之前进行相关拦截设置。
2.1.2 postHandle:在请求处理之后进行调用,但是在视图被渲染之前,即接口方法调用之后进行拦截设置。
2.1.3 afterCompletion:在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行,即请求结束主要用于资源清理,比如关闭释放资源等的设置。

2.2 重写这个拦截器中的方法preHandle(...),这个方法是用来配置个性化的拦截配置的,比如:在请求登录接口的时候返回一个session,并给这个session设置键和值,比如用户名,Token等等,在再这个拦截器配置中进行获取session中的这个定义好的键值的操作,比如:request.getSession().getAttribute("userLogin");

2.3 再获取键和值之后,进行个性化的判断,按照需求设置好何时应该放行,何时应该拦截,并且设置拦截后要做的业务,例如:跳转到首页并说明如果需要访问请先登录。

2.4 在配置拦截时,返回false则是表示拦截,返回true则是表示放行。

2.5 将这个配置好的自定义的拦截器注入到SpringMvc的扩展配置类中

3.添加到SpringMvc自定义配置类的步骤

3.1 重写public void addInterceptors(InterceptorRegistry registry) {...}方法

3.2 在public void addInterceptors(InterceptorRegistry registry) {...}方法中将配置好的拦截器添加到registry中

3.3 通过.addPathPatterns方法添加需要拦截的请求

3.4 通过.excludePathPatterns方法添加需要放行的请求,包括首页、登录页、登录请求、静态资源包括css、js、img等,注意必须要留有登录的请求链接,否则全部拦截则无法进行后续操作。

@Override
public void addInterceptors(InterceptorRegistry registry) {
    //添加拦截器,并且设置拦截/**下所有请求,排除拦截"/idenx.html","/","/user/login","css/**","js/**","img/**"的请求
    registry.addInterceptor(new LoginResolveInterceptor())
            .addPathPatterns("/**")
            .excludePathPatterns("/idenx.html","/","/user/login","/css/**","/js/**","/img/**");
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。