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

相关文章

JavaWeb-WebSocket浏览器服务器双向通信方式

《JavaWeb-WebSocket浏览器服务器双向通信方式》文章介绍了WebSocket协议的工作原理和应用场景,包括与HTTP的对比,接着,详细介绍了如何在Java中使用WebSocket,包括配... 目录一、概述二、入门2.1 POM依赖2.2 编写配置类2.3 编写WebSocket服务2.4 浏

Oracle数据库如何切换登录用户(system和sys)

《Oracle数据库如何切换登录用户(system和sys)》文章介绍了如何使用SQL*Plus工具登录Oracle数据库的system用户,包括打开登录入口、输入用户名和口令、以及切换到sys用户的... 目录打开登录入口登录system用户总结打开登录入口win+R打开运行对话框,输php入:sqlp

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择

spring 参数校验Validation示例详解

《spring参数校验Validation示例详解》Spring提供了Validation工具类来实现对客户端传来的请求参数的有效校验,本文给大家介绍spring参数校验Validation示例详... 目录前言一、Validation常见的校验注解二、Validation的简单应用三、分组校验四、自定义校

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

Java Web指的是什么

Java Web指的是使用Java技术进行Web开发的一种方式。Java在Web开发领域有着广泛的应用,主要通过Java EE(Enterprise Edition)平台来实现。  主要特点和技术包括: 1. Servlets和JSP:     Servlets 是Java编写的服务器端程序,用于处理客户端请求和生成动态网页内容。     JSP(JavaServer Pages)