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

news2024/9/22 19:42:08

目录

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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2071743.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Visual C++ 的免费绘图库 EasyX下载安装

EasyX Graphics Library 是针对 Visual C++ 的免费绘图库,支持 VC6.0 ~ VC2022,简单易用,学习成本极低,应用领域广泛。目前已有许多大学将 EasyX 应用在教学当中。 下载地址:EasyX Graphics Library for C++ 1、应用 2、文中有很多的C++应用案例 3、编程需要的数学知识 …

19530 2的幂次方表示

### 思路 1. **分解为2的幂次方**:将输入的正整数n分解为若干个2的幂次方之和。 2. **递归表示**:使用递归的方法将每个幂次方表示为2的幂次方形式。 3. **组合结果**:将所有的幂次方表示组合成最终的结果。 ### 需要注意的点 - 需要处理幂次…

8.21 补题

六题 C 16进制世界 链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 这是一个16进制的世界,比如522的16进制是20A。 在5月22日那天,有人送给Bob一些月饼,每个月饼有饱食度和幸福度两个属性。 现…

计算机网络面试真题总结(二)

文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 在浏览器中输入 URL 地址到显示主页的过程? URL解析&a…

【记录】基于Windows系统安装rust环境的过程

到官网下载安装包【入门 - Rust 程序设计语言 (rust-lang.org)】 ![[Pasted image 20240703142911.png]] 选择1,快速安装 选择编译配置,1为标准 安装完成 验证是否安装完毕 rustc --versioncargo --version验证成功!

【数据结构篇】~二叉树(堆)

【数据结构篇】~二叉树(堆) 二叉树1.树2.树的组成3.二叉树4.堆1.向上调整算法2.向下调整算法3.堆排序 4.topk问题源码 二叉树 1.树 树的概念与结构​ 树是一种非线性的数据结构,它是由 n(n>0) 个有限结点组成一个…

利用“2+1链动模式小程序AI智能名片S2B2C商城源码”优化企业参与外部社群策略

摘要:在当今数字化时代,企业参与外部社群已成为其市场扩张、品牌塑造及用户增长不可或缺的一环。然而,面对浩如烟海的社群类型,包括行业论坛、地区性论坛、特定兴趣爱好的论坛以及短视频网站等,如何精准选择并有效介入…

16.C基础_内存管理

内存分区 1、整体框图 内存分为代码区、全局区、栈区、堆区。代码区和全局区在代码编译完之后就已经确定,栈区和堆区是在程序运行时进行开辟和释放的。整体内存分区框图如下: 对于一个进程,它一共有4G的空间,其中0~3G为上述的4个…

Flask+LayUI开发手记(三):LayUI表格的后端数据分页展现

前几天写了数据表格table的前端分页展现,思路是把数据一次性取到前端,然后由前端来控制分页展现。这种做法主要目的是为了降低后端数据库读写的次数减轻服务端运行压力。但是,如果功能不单是查询还要进行增删改操作,那么一次数据提…

自制项目镜像并拉取

1.先把项目jar包拉到Linux上看能用不 mvn clean package cd target java -jar shared_battery-0.0.1-SNAPSHOT.jar 成功!!!!!!!!!!!!&…

24-8-24-读书笔记(十五)-《空谷幽兰》([法] 巴尔扎克 [译] 李玉民 )

文章目录 《空谷幽兰》([法] 巴尔扎克 [译] 李玉民 )阅读笔记记录(P112-P126)总结 《空谷幽兰》([法] 巴尔扎克 [译] 李玉民 ) 《空谷幽兰》巴尔扎克最为得意的作品,这篇主要记录一个德莫尔索夫…

SSRF漏洞实现

文章目录 SSRF题1SSRF题2fastcgi方法 入侵网站收集资产方法SSRF反弹 SSRF题1 漏洞复现平台 代码: 首先,可以用dict探测一下内网开放的端口 可以检测是否有fastcgi或者是redis,如果有fastcgi,那么就有RCE漏洞破解,如…

Adobe Animate (AN)软件安装,硬件配置(附安装包)

目录 一、Adobe An 软件简介 Adobe An 软件的特点 Adobe An 软件的优势 下载 二、Adobe An 软件安装 安装前的准备工作 安装过程中的注意事项 安装后的设置 三、Adobe An 软件使用 高级动画技巧 交互设计 优化与性能提升 四、Adobe An 软件快捷键 选择工具快捷键…

专业级推荐:2024年硬盘数据恢复软件全攻略

硬盘作为我们存储珍贵数据、工作文档、家庭照片以及个人视频的核心载体,其重要性不言而喻。然而,随着使用时间的增长或是操作不当硬盘可能会遭遇损坏。遇到这种问题我们要怎么挽救自己的数据呢,这次我就来分享下我用过的硬盘数据恢复软件。 …

基于Netty的RPC框架

RPC远程过程调用(Remote Procedure Call)是一种通信协议,它允许程序调用位于不同地址空间(通常是网络上的另一台机器)的方法,而无需程序员显式编码这个远程调用的细节。这种技术隐藏了底层的通讯细节,使得调用远程服务…

中国数据库的崛起:从本土化挑战到全球化机遇

引言 谈起中国的崛起,大家第一反应可能是“中国制造”“高铁奇迹”“电商帝国”,但今天我们要聊的,是一个比这些还要神秘的存在——中国的数据库技术。或许你平时并不会经常关注它,但这个隐身在你手机、电脑、服务器背后的无形力…

Towards Enriched Controllability for Educational Question Generation

文章目录 题目摘要引言生成显式和隐式问题实验设置结果基线结论 题目 迈向教育问题生成的丰富可控性 论文地址:https://arxiv.org/abs/2306.14917 摘要 问题生成 (QG) 是自然语言处理 (NLP) 中的一项任务,涉及根据输入自动生成问题,输入通常由文本和目标…

在进行网站链接时,‌加上http或https的重要性不言而喻

这一简单的操作背后,‌蕴含着对搜索引擎优化(‌SEO)‌的深刻理解,‌以及对网站权重提升的精准把握。‌以下,‌我们将深入探讨这一话题,‌以期为您的网站优化提供有价值的参考。‌优化(‌SEO&…

即时通讯IM软件推荐:五款适合企业内部使用的IM即时通讯软件

随着企业的不断发展,内部沟通和协作变得尤为重要。为了提高沟通效率、加强团队协作以及促进信息共享,企业需要选择适合自身需求的即时通讯IM软件。本文将为大家推荐五款适合企业内部使用的IM即时通讯软件,其中包括了备受赞誉的WorkPlus。 Wor…

SPSS和MATLAB实现【典型相关分析】

典型相关分析(Canonical Correlation analysis ),是用于研究 两组 变量(每组变量中都可能有多个指标) 之间相关关系的一种多元统计方法。它能够揭示出两组变量之间的内在联系。 我们之前总结的相关性分析,也…