登录拦截实现
程序开发
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/**");
标签:
上一篇:
若依框架 如何在首页展示数据,点击登录时在跳往若依自带的登录界面
下一篇:
相关文章
-
无相关信息