素材巴巴 > 程序开发 >

登录拦截实现

程序开发 2023-09-04 16:39:23

文章目录

登录拦截实现

01、概述

在开发中比如个人用户中心,后台数据管理等,除了登录,退出,注册,忘记密码等不需要拦截以外其他的全部要进行登录拦截才能访问,

一句话:没有登录不允许进入,为什么这样做呢?因为要记录用户信息和用户行为。

02、在开发过程如何实现和达成呢?

03、定义拦截器类LoginInterceptor.java

package com.kuangstudy.handler;import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.servlet.HandlerInterceptor;
 import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;/*** Description:* Author: l Administrator* Version: 1.0* Create Date Time: 2021/12/19 21:45.* Update Date Time:** @see*/
 @Slf4j
 public class LoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {log.info("111111111111111111------>preHandle 执行进来了");// 如果为false,直接阻断,不会处理任何动作,动作必须要你来决定(// 1:你可以选择跳转页面,(几乎用不到)// 2:你也重定向到你指定路由(常用做法)// 3:你也可以用流输出流程(常用做法)// 如果拦截器执行完毕,返回true,代表的是:执行完毕逻辑了,去处理你springmvc的路由方法return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {log.info("33333333333333333------>postHandle 执行进来了");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {log.info("44444444444444444------>afterCompletion 执行进来了");}
 }

04、定义拦截器类LoginInterceptor进行注册

package com.kuangstudy.config.mvc;import com.kuangstudy.handler.LogInterceptor;
 import com.kuangstudy.handler.LoginInterceptor;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;/*** Description:* Author: l Administrator* Version: 1.0* Create Date Time: 2021/12/19 21:49.* Update Date Time:** @see*/
 @Configuration
 public class WebMvcConfiguration implements WebMvcConfigurer {// 1:把LoginInterceptor放入到ioc容器中@Beanpublic LoginInterceptor getLoginInterceptor(){return new LoginInterceptor();}@Beanpublic LogInterceptor getLogInterceptor(){return new LogInterceptor();}//:2:注册拦截器的方法@Overridepublic void addInterceptors(InterceptorRegistry registry) {// registry.addInterceptor(getLoginInterceptor()) 注册拦截器registry.addInterceptor(getLoginInterceptor())// 拦截器进入的路由规则是什么,addPathPatterns 代表以下配置的路由都会进行LoginInterceptor// 求执行一次在进入路由springmvc的具体方法中.addPathPatterns("/detail/**","/","/index")// 代表不拦截路由.excludePathPatterns("/detail/new/**");registry.addInterceptor(getLogInterceptor())// 拦截器进入的路由规则是什么,addPathPatterns 代表以下配置的路由都会进行LoginInterceptor// 求执行一次在进入路由springmvc的具体方法中.addPathPatterns("/detail/**","/","/index")// 代表不拦截路由.excludePathPatterns("/detail/new/**");}
 }

05、定义拦截器的执行过程

提醒:拦截器它一定是根据路由规则拦截。

在这里插入图片描述

如下:

06、未来如果做后台或者个人中心,或者小程序,路由建议

统一增加路由前缀:/admin或者 /api 为什么呢?

遵循一个规则:尽量减少配置,和修改。

registry.addInterceptor(getLoginInterceptor())// 拦截器进入的路由规则是什么,addPathPatterns 代表以下配置的路由都会进行LoginInterceptor// 求执行一次在进入路由springmvc的具体方法中.addPathPatterns("/admin/**");registry.addInterceptor(getLoginInterceptor())// 拦截器进入的路由规则是什么,addPathPatterns 代表以下配置的路由都会进行LoginInterceptor// 求执行一次在进入路由springmvc的具体方法中.addPathPatterns("/api/**");// 拦截器进入的路由规则是什么,addPathPatterns 代表以下配置的路由都会进行LoginInterceptor// 求执行一次在进入路由springmvc的具体方法中.addPathPatterns("/api/**");
 

标签:

素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。