后端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

相关文章

Java中的Schema校验技术与实践示例详解

《Java中的Schema校验技术与实践示例详解》本主题详细介绍了在Java环境下进行XMLSchema和JSONSchema校验的方法,包括使用JAXP、JAXB以及专门的JSON校验库等技术,本文... 目录1. XML和jsON的Schema校验概念1.1 XML和JSON校验的必要性1.2 Sche

90%的人第一步就错了! 顺利登录wifi路由器后台的技巧

《90%的人第一步就错了!顺利登录wifi路由器后台的技巧》登录Wi-Fi路由器,其实就是进入它的后台管理页面,很多朋友不知道该怎么进入路由器后台设置,感兴趣的朋友可以花3分钟了解一下... 你是不是也遇到过这种情况:家里网速突然变慢、想改WiFi密码却不知道从哪进路由器、新装宽带后完全不知道怎么设置?别慌

SpringBoot AspectJ切面配合自定义注解实现权限校验的示例详解

《SpringBootAspectJ切面配合自定义注解实现权限校验的示例详解》本文章介绍了如何通过创建自定义的权限校验注解,配合AspectJ切面拦截注解实现权限校验,本文结合实例代码给大家介绍的非... 目录1. 创建权限校验注解2. 创建ASPectJ切面拦截注解校验权限3. 用法示例A. 参考文章本文

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

Spring Security重写AuthenticationManager实现账号密码登录或者手机号码登录

《SpringSecurity重写AuthenticationManager实现账号密码登录或者手机号码登录》本文主要介绍了SpringSecurity重写AuthenticationManage... 目录一、创建自定义认证提供者CustomAuthenticationProvider二、创建认证业务Us

Springboot项目登录校验功能实现

《Springboot项目登录校验功能实现》本文介绍了Web登录校验的重要性,对比了Cookie、Session和JWT三种会话技术,分析其优缺点,并讲解了过滤器与拦截器的统一拦截方案,推荐使用JWT... 目录引言一、登录校验的基本概念二、HTTP协议的无状态性三、会话跟android踪技术1. Cook

使用Redis快速实现共享Session登录的详细步骤

《使用Redis快速实现共享Session登录的详细步骤》在Web开发中,Session通常用于存储用户的会话信息,允许用户在多个页面之间保持登录状态,Redis是一个开源的高性能键值数据库,广泛用于... 目录前言实现原理:步骤:使用Redis实现共享Session登录1. 引入Redis依赖2. 配置R

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

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