SpringBoot登录拦截学习
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/**");
}
- 点赞
- 收藏
- 关注作者
评论(0)