后端Web之登录校验(下篇)

2024-08-24 21:12
文章标签 校验 登录 web 下篇 后端

本文主要是介绍后端Web之登录校验(下篇),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1.概述

​2.过滤器Fliter

3.拦截器Interceptor


1.概述

Filter过滤器:在Web开发中,过滤器(Filter)是一种非常重要的组件,用于在请求到达目标资源(如Servlet或静态资源)之前或之后,对请求或响应进行预处理或后处理。

它是JavaWeb三大组件(Servlet、Filter. Listener)之一。过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。过滤器一般完成一些通用的操作,比如:登录校验、统一编码处理、敏感字符处理等。

Interceptor拦截器:Web开发中扮演着重要的角色,主要用于在请求到达Controller之前或之后执行一些操作。

 它是一种动态拦截方法调用的机制,类似于过滤器。Spring框架中提供的用来动态拦截控制器方法的执行。其作用是拦截请求,在指定的方法调用前后,根据业务需要执行预先设定的代码。

2.过滤器Fliter

它的使用非常简单:1.定义Filter:定义一个类,实现Filter接口,并重写其三个方法。2.配置Filter: Filter类 上加@WebFilter注解,配置拦截资源的路径。引导类上加@ServletComponentScan开启Servlet组件支持。

执行流程:放行后访问对应资源,资源访问完成后,还会回到Filter中,接着执行放行后的逻辑

Filter可以根据需求,配置不同的拦截资源路径:

过滤器链:一个web应用中,可以配置多个过滤器,这多个过滤器就形成了-一个过滤器链。执行顺序:注解配置的Filter,优先级是按照过滤器类名(字符串)的自然排序。例如A开头的过滤器就比B开头的过滤器先执行。

登录校验过滤器:

思路:所有的请求拦截后,除了登录请求之外都需要校验令牌。有令牌, 且令牌校验通过(合法) 才可以放行执行业务操作,否则都返回未登录错误结果

//1.获取请求url
String url=reg.getRequestURL().toString();
log.info("请求的url:{}",url);//2.判断请求url中是否包含login,包含就是登录操作,放行
if (url.contains("login")){log.info("登录操作,放行");chain.doFilter(request,response);return;
}//3.获取请求头中的令牌(token)
String jwt = req.getHeader("token");//4.判断令牌是否存在、如果不存在、返回错误结果(未登录)
if(!StringUtils.hasLength(jwt)){1og.info("请求头token为空,返回未登录的信息");Result error=Result.error("NOT LOGIN");String notLogin =JSONObject.toJSONString(error)resp.getWriter().write(notLogin);return;
}//5.解析token,如果解析失败,返回错误结果(未登录)
try {JwtUtils.parseJwT(jwt);    
} catch(Exception e){//jwt解析失败e.printstackTrace();log.info("解析令牌失败,返回错误信息");Result error=Result.error("NOT LOGIN");String notLogin =JSONObject.toJSONString(error)resp.getWriter().write(notLogin);return;
}//6.放行
log.info("令牌合法,放行");
chain.doFilter(request,response);

3.拦截器Interceptor

使用:1.定义拦截器,实现HandlerInterceptor接口,并重写其所有方法。注释@Component把这个拦截器交给IOC容器管理。

2.注册拦截器,注入刚刚定义的拦截器,通配符**拦截所有请求

拦截器可以根据需求,配置不同的拦截路径:也可以指定不拦截的路径

过滤器和拦截器的总体执行流程:

过滤器和拦截器的区别

  • 接口规范不同:过滤器需要实现Filter接口,而拦截器需要实现HandlerInterceptor接口。
  • 拦截范围不同:过滤器Filter会拦截所有的资源,而Interceptor只拦截Spring环境中的资源。

登录校验拦截器的流程和过滤器完全一致, 按照接口规范CV一下稍作改造就可以了。

//删去过滤器当中的doFilter方法
//放行改为return true,不放行改为return false即可,其他步骤同理
if (url.contains("login")){log.info("登录操作,放行");return true;
}

这篇关于后端Web之登录校验(下篇)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1103619

相关文章

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

Python Web框架Flask、Streamlit、FastAPI示例详解

《PythonWeb框架Flask、Streamlit、FastAPI示例详解》本文对比分析了Flask、Streamlit和FastAPI三大PythonWeb框架:Flask轻量灵活适合传统应用... 目录概述Flask详解Flask简介安装和基础配置核心概念路由和视图模板系统数据库集成实际示例Stre

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho

Java Web实现类似Excel表格锁定功能实战教程

《JavaWeb实现类似Excel表格锁定功能实战教程》本文将详细介绍通过创建特定div元素并利用CSS布局和JavaScript事件监听来实现类似Excel的锁定行和列效果的方法,感兴趣的朋友跟随... 目录1. 模拟Excel表格锁定功能2. 创建3个div元素实现表格锁定2.1 div元素布局设计2.

如何使用Haporxy搭建Web群集

《如何使用Haporxy搭建Web群集》Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多如LVS和Nginx,本案例介绍使用Haproxy及Nginx搭建一套Web群集,感兴趣的... 目录一、案例分析1.案例概述2.案例前置知识点2.1 HTTP请求2.2 负载均衡常用调度算法 2.

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.