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

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

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

目录

1.概述

2.会话技术

3.JWT令牌


1.概述

基础的登录功能实际上就是查询数据库中有没有输入的用户和密码,有就放行,没有就返回错误信息,根据三层架构进行开发:

controller层:

service层:

 mapper层:

以上完成了基础的登录功能。此时通过路径访问,依然可以不输入用户信息而直接进入到系统中,下面添加登录校验功能,以保证必须登录才能访问。

登录校验:

登录校验,也称为身份验证(Authentication),是确认用户身份的过程。在计算机系统、网络或应用程序中,登录校验是一个关键的安全步骤,用于确保只有经过授权的用户才能访问受限资源。简单来说,就是只有用户登录了,才能进增删改查等操作。

我们在用户登录后建立一个登录标记,再利用拦截器拦截浏览器发送的请求,拦截器去判断是否有登陆标记,有就正常放行请求,没有就给浏览器返回错误信息。这样我们就构建了登录校验的功能。登录标记使用会话技术,统一拦截有两种,1.servlet中的过滤器filter。2.spring的拦截器interceptor

2.会话技术

会话技术(Session Technology)是Web应用程序用来识别和管理用户会话的一种机制。会话技术允许服务器在无状态的HTTP协议下跟踪用户的活动和状态。浏览器和服务器间的一次链接就称为一次会话。

简单来说,用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应。

会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间共享数据。比如验证码,发送请求获取验证码图片,输入验证码登录又发送了一次请求。这两次请求之间就需要进行验证码值的对比,此时就要共享数据。

会话跟踪技术方案:1.客户端会话跟踪技术: Cookie  2.服务端会话跟踪技术: Session  3.令牌技术

Cookie:浏览器第一次登录时,服务端将生成一个cookie用于存储一些用户的数据信息,比如id。再将这个cookie返回给浏览器,浏览器本地存储这个cookie,这样每次浏览器发送请求都携带这个cookie给服务器,服务器有这个cookie值,就给浏览器请求放行,这样就完成了不同请求间的数据共享。

Tomcat也有cookie的api,可以方便的设置和获取cookie:

浏览器第一次请求后,服务端返回的cookie的值

在浏览器storage中存储了这个cookie,

再次请求服务端,将在请求头中携带这个cookie

cookie的优点是http协议支持cookie技术,一切动作都是浏览器自动进行的。

缺点是1.移动端无法使用cookie。2.cookie存储在用户本地,不安全而且用户可以禁用cookie。3.cookie不能跨域( 协议/IP/端口这三个维度有一个维度不同就是跨域操作)

例如在前后端分离的开发中,前后端部署在不同的服务器上,如果域名不同,登录时访问的前端登录页面,进入后却要访问后端,此时cookie就无法使用了。

session:实际上也是基于cookie实现的。不同的是Session值将存储在服务器端,服务器通过Session ID来识别和管理不同用户的Session。其他流程和cookie一致,服务端发送cookie,这个cookie中包含sessionID,每次请求浏览器都携带这个sessionID,由服务端判断ID是否存在,存在则放行。

Session的优点是值存储在服务端,即使cookie被他人恶意劫持修改了,ID不通过依然不会放行,因此比较安全。

缺点是1.服务器集群环境下无法直接使用session,因为请求访问的后端服务器可能不一样,a服务器存储了ID,但b服务器没有,那么就会被b服务器判断为第一次访问。2.由于基于cookie,因此也有cookie的部分缺点。

现在的企业基本都是用集群服务器,而以上两种方案存在许多问题,由此引入第三种方案:令牌技术,也是如今常用的用于登录认证的技术。

3.JWT令牌

JSON Web Tokens (JWT)定义了一种简洁的、 自包含的格式,用于在通信双方以json数据格式安全的传输信息。由于数字签名的存在,这些信息是可靠的。 官网:JSON Web Tokens - jwt.io

它是一种无状态的认证机制,它允许服务端生成一个包含用户信息和签名的Token,客户端在每次请求时携带这个Token,服务端通过验证Token的签名来确认用户的身份和权限。JWT的流程大致为:用户登录 → 获取Token → 携带Token请求资源 → 服务端验证Token并返回数据

简洁的:jwt令牌实际上就是一串字符串。自包含:看似随机的字符串中可以存储自定义信息

其组成如下:

JWT的生成和校验:

引入依赖

jwts工具类用于生成和校验

令牌一旦生成,篡改其任何一位都将无法通过校验,并且令牌存在有效期,过了有效期令牌就无法使用了。因此令牌是安全可靠的,避免了cookie可伪造等缺点。

登录后下发令牌:

以上就完成了在不同的请求之间数据的共享,通过判断浏览器发送的请求是否携带合法的jwt令牌。如何统一拦截请求并判断令牌合法放在下篇(filter/interceptor)

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



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

相关文章

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)

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏