项目系列之登录管理

2023-10-31

登录管理是现代计算机系统中关键的组成部分之一。那么本篇博客我们来简单了解一下登录的流程与前后端干了啥事。

一.登录流程:

  1. 用户打开登录页面: 用户访问应用程序或网站的登录页面。此页面通常包含用户名/邮箱输入字段和密码输入字段,以及登录按钮。

  2. 用户输入凭据: 用户在登录页面上输入其已注册的用户名/邮箱和相应的密码。

  3. 客户端验证: 用户点击登录按钮后,客户端(通常是浏览器)会对输入的凭据进行验证。这些验证可以包括对输入字段的格式验证、检查输入是否为空等。

  4. 凭据传输到服务器: 客户端使用安全的方式(如HTTPS)将用户输入的凭据发送到服务器端。

  5. 服务器端验证: 服务器端接收到用户登录请求后,会进行进一步的验证。这些验证包括以下几个方面:

    • 用户名/邮箱存在性验证:检查用户输入的用户名/邮箱是否存在于系统的用户数据库中。
    • 密码验证:比对用户输入的密码和存储在数据库中的密码的哈希值是否匹配。
    • 可能的其他验证:根据具体需求,服务器端可能还会进行其他验证,例如检查用户账号的状态(是否被封禁等)。
  6. 生成登录令牌: 如果用户的凭据通过了服务器端的验证,服务器会为该用户生成一个登录令牌(也可以称为会话令牌或访问令牌)。登录令牌是一个唯一的标识符,用于在用户会话期间验证用户的身份。

  7. 将登录令牌返回给客户端: 服务器将登录令牌发送回客户端作为响应。通常,登录令牌会存储在客户端的浏览器会话(如cookie)中,以便后续的请求可以携带该令牌以验证用户的身份。

  8. 登录成功: 如果用户的凭据验证成功并且登录令牌已经成功生成并返回给客户端,服务器端会将登录状态设置为已认证,并将用户重定向到登录后的页面或主页。

  9. 会话管理: 在用户完成登录后,服务器会根据登录令牌来管理用户的会话。这可以包括验证每个后续请求中的令牌、检查会话的有效期是否过期等。

  10. 登出: 当用户主动点击登出按钮或会话失效时,客户端会发送登出请求给服务器。服务器会将用户的登录状态设置为未认证,并删除与该用户关联的登录令牌。

二.cookie与session的变化

  1. 存储位置:

    • Cookie:Cookie是由浏览器在客户端存储的小型文本文件。浏览器会将Cookie存储在用户的计算机或移动设备上,每次发送请求时都会自动附加到请求头中。
    • Session:Session是在服务器端存储的用户会话信息。服务器会为每个用户分配一个唯一的会话标识符,并将相关信息存储在服务器上的内存或持久化存储中(如数据库或缓存)。
  2. 数据存储:

    • Cookie:Cookie通常包含一小段文本,其中存储有关用户的标识数据(如会话ID或用户ID)。Cookie可以设置过期时间,可以被其他网站访问(如果未设置限制),并且每次请求都会自动发送到服务器。
    • Session:Session存储在服务器上,通常以键值对的形式存储用户的会话信息。关于用户的其他数据(如用户角色、权限等)可以存储在Session中,并且只有在服务器上进行读取和写入。
  3. 安全性:

    • Cookie:Cookie在客户端存储,因此对于安全性有一定的风险。为了增加安全性,Cookie可以通过设置标志来限制跨站点访问(Secure Flag)和JavaScript访问(HttpOnly Flag)。
    • Session:Session在服务器端存储,因此相对于Cookie更安全。只有服务器可以访问和修改Session数据。
  4. 生命周期:

    • Cookie:Cookie可以设置过期时间,可以长期保持在客户端,即使用户关闭浏览器。持久性Cookie在未过期之前都会被发送到服务器。
    • Session:Session通常在用户关闭浏览器或一段时间不活动后过期。会话过期后,用户必须重新进行身份验证。

三.前后端的操作

前端操作:

  1. 界面设计:前端开发人员负责设计和开发用户登录页面。该页面通常包括用户名/邮箱输入字段、密码输入字段和登录按钮。
  2. 用户输入验证:前端通过JavaScript验证用户输入的凭据是否符合要求,例如检查输入字段是否为空、用户名是否符合特定格式等。
  3. 凭据传输:在用户点击登录按钮后,前端通过使用安全的方式(如HTTPS)将用户输入的凭据传输到后端服务器。
  4. 错误处理:前端应该能够处理后端返回的登录错误,并向用户提供相关的错误信息。例如,用户名或密码错误等。

后端操作:

  1. 接收请求:后端服务器接收前端传输过来的用户凭据,通常使用HTTP请求来接收登录请求。
  2. 验证用户凭据:后端通过以下步骤验证用户凭据:
    • 用户名/邮箱存在性验证:检查用户输入的用户名/邮箱是否存在于系统的用户数据库中。
    • 密码验证:将用户输入的密码与数据库中存储的密码进行比对,通常是比对密码的哈希值。
    • 其他验证:根据应用需求,还可以进行其他验证,例如检查用户账号的状态(是否被封禁等)。
  3. 生成登录令牌:如果用户的凭据验证成功,后端会生成一个登录令牌(也称为会话令牌或访问令牌)。该令牌用于在用户会话期间验证用户的身份。令牌通常是加密的,并包含用户的身份信息和其他必要的权限信息。
  4. 返回登录状态和令牌:后端将登录状态设置为已认证,并将登录令牌返回给前端。通常,令牌会被存储在浏览器的会话(如cookie)中,以便后续的请求可以携带该令牌以验证用户的身份。
  5. 会话管理:后端根据登录令牌进行会话管理。这可以包括验证每个后续请求中的令牌、检查会话的有效期是否过期等。如果用户主动登出或会话失效,后端会将登录状态设置为未认证,并删除与用户关联的登录令牌。

前端和后端的合作: 前端和后端需要通过API进行通信,以完成用户登录的流程。前端发送登录请求并将用户凭据传递给后端,后端验证凭据并返回登录状态和令牌给前端。前端在接收到令牌后存储在会话中,并在后续的请求中携带该令牌,以便后端可以验证用户的身份。

四.简单逻辑代码

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class UserLoginModule {
    private Map<String, String> users;

    public UserLoginModule() {
        users = new HashMap<>();
        users.put("user1", "password1");
        users.put("user2", "password2");
        users.put("user3", "password3");
    }

    public boolean login(String username, String password) {
        if (users.containsKey(username) && users.get(username).equals(password)) {
            System.out.println("Login successful!");
            return true;
        } else {
            System.out.println("Login failed. Invalid username or password.");
            return false;
        }
    }

    public static void main(String[] args) {
        UserLoginModule loginModule = new UserLoginModule();

        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter username: ");
        String username = scanner.nextLine();

        System.out.print("Enter password: ");
        String password = scanner.nextLine();

        loginModule.login(username, password);
    }
}
  • UserLoginModule存储一个映射users,其中包含用户名作为键和密码作为值。在构造函数中,我们使用一些示例用户数据填充地图。
  • login方法将用户名和密码作为参数,并检查它们是否与映射中的条目匹配users。如果用户名和密码组合有效,则会打印“登录成功!” 并返回true。否则,它会打印“登录失败。用户名或密码无效。” 并返回false
  • 在该main方法中,我们创建一个实例UserLoginModule并提示用户使用该类输入用户名和密码Scanner。然后我们调用该login方法来执行登录操作。
  • 五.token

  • 在登录用户模块中,通常使用令牌(token)用于身份验证和授权目的。令牌是一个具有一定时效性的凭证,用于验证用户的身份并授予其对受保护资源的访问权限。
  • token的常见情况

  • 登录令牌生成:用户当成功进行身份验证并通过登录流程时,登录模块会生成一个登录令牌并返回给客户端。该登录令牌通常为一个长字符串,可以包含用户识别信息及其他必要信息信息。

  • 令牌令牌:登录令牌通常具有一定的长度,即在一段时间后到期。令牌的长度可能是固定的,也可以根据系统需求进行动态调整。一旦令牌过期,用户需要重新进行身份验证以获取新的令牌。

  • 刷新令牌:为了延长用户登录的效果,某些系统使用刷新令牌来获取新的访问令牌。刷新令牌与登录令牌不同,它通常具有更长的有效性,并用于向服务器认证请求新的访问令牌。使用刷新令牌可以减少频繁的登录操作,提供更好的用户体验。

  • 更新令牌:在某些情况下,令牌的信息可能需要更新。例如,当用户更改密码或更改了账户相关的敏感信息时,为了保证安全性,系统可能会生成新的令牌并通知用户重新登录。

  • 令牌撤销:在某些情况下,需要撤销令牌,例如用户注销或账户被锁定。当令牌被撤销时,将不再被认可,并且无法访问系统中的资源。

  • 风险令牌刷新策略:系统可以制定一些刷新令牌的策略来平衡安全性和性能。例如,可以限制刷新令牌的使用次数或设置每次刷新的最大剂量。这样可以减少中断和保障系统性能。

  • 多身份验证:除了令牌外,还可以使用其他形式的身份验证来增强安全性,例如短信验证码、指纹识别、手机应用程序生成的一次性密码等。这些附加的身份验证因素可以在登录过程中与令牌结合使用,提供额外的安全保护。

小结:

        登录管理是确保计算机系统安全性的重要组成部分。通过采用适当的登录管理方法和实施安全措施,可以有效地保护用户身份和数据的安全。同时,持续的安全教育和更新也保持登录管理系统安全性的关键。

        像权限的说明等等就不在这里多少了,建议使用现有的权限管理框架或库,并与安全专家合作来保证系统具备适当的权限管理机制。登录系统可是重中之重,望各位重视。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

项目系列之登录管理 的相关文章

随机推荐

  • 10G RAC中的CSS TIMEOUT相关的设置和调整(ZT)

    10G RAC中的CSS TIMEOUT相关的设置和调整 作者 天涯 来源 中国自学编程网 发布日期 1214468885 这篇文章是偶用半生不熟的E文翻译过来的 所以很多可能看着很别扭 E文好的建议直接看原文 在METALINK中的294
  • 海康服务器系统装完重启转圈蓝屏,win10重启一直转圈的解决方法 win10重启一直转圈 - 云骑士一键重装系统...

    Ready 品牌型号 联想GeekPro 2020 系统 win10 1909 64位企业版 软件版本 大番茄一键重装系统2 1 6 我们在使用win10系统时 有时会给win10重新启动 但是出现win10重新启动一直转 这是怎么一回事呢
  • 计算机组成原理补充实验,计算机组成原理补充实验.doc

    计算机组成原理补充实验 计算机组成原理补充实验 目 录 第一节 计算机组成原理常用部件实验 1 实验1 数据选择器 2 实验2 寄存器 3 实验3 计数器 5 实验4 译码器 6 实验5 节拍发生器 7 第二节 运算器组成实验 8 实验1
  • pygame小游戏-------FlappyBird像素鸟的实现

    简述 对FlappyBird像素鸟游戏的简单复现 仅两百行左右 工程目录结构为image文件夹和run py文件 pygame模块的下载直接pip install pygame即可 图片下载地址为像素鸟图片 音频文件自己找一个即可 impo
  • 基于JavaWeb的学生信息管理系统

    项目背景 学生信息管理是学校的重要工作之一 传统的学生信息管理由于是手工操作 工作量大且容易出错 随着计算机和网络技术的迅速发展 越来越多的院校都拥有了自己的学生信息管理系统 而采用B S架构的学生信息管理系统进行学生信息的管理则是其趋势
  • 使用ffmpeg打开本地文件

    其中 AVFormatContext 用来存储视音频封装格式 flv mp4 rmvb avi 中包含的所有信息 很多函数都要用到它作为参数 avformat open input 该函数是打开多媒体数据并且获得一些相关的信息 其中填入的
  • Pytorch 多卡并行(1)—— 原理简介和 DDP 并行实践

    近年来 深度学习模型的规模越来越大 需要处理的数据也越来越多 单卡训练的显存空间和计算效率都越来越难以满足需求 因此 多卡并行训练成为了一个必要的解决方案 本文主要介绍使用 Pytorch 的 DistributedDataParallel
  • C语言实训通讯录(静态和动态版本)

    作者 旧梦拾遗186 专栏 C语言编程 小比特成长日记 相关链接 自定义类型下 枚举 联合 C语言 每日励志 改变 永远不嫌晚 无论你是几岁 也无论你目前所处的境况有多糟 只要立定目标 一步一步往前走 人生随时都有翻盘的可能性 目录 一 前
  • CVE-2023-3450:锐捷 RG-BCR860 命令执行漏洞复现

    锐捷 RG BCR860 命令执行漏洞 CVE 2023 3450 复现 0x01 前言 本次测试仅供学习使用 如若非法他用 与本文作者无关 需自行负责 0x02 漏洞描述 Ruijie Networks RG BCR860是中国锐捷网络
  • 统计学习方法——概述

    统计学习方法之概述 1 统计学习的特点 1 统计学习以计算机及网络为平台 是建立在计算机及网络上的 2 统计学习以数据为研究对象 是数据驱动的学科 3 统计学习的目的是对数据进行预测与分析 4 统计学习以方法为中心 统计学习方法构建模型井应
  • windows10企业版开启RDP多用户同时登录

    1 系统属性 开启远程桌面 添加远程桌面登录用户 2 快捷键win R 输入 gpedit msc 打开本地组策略编辑器 选择 管理模板 gt Windows组件 gt 远程桌面服务 gt 远程桌面会话主机 gt 连接 配置 限制连接的数量
  • 夯实网络安全基石,筑牢网络安全防线

    没有网络安全就没有国家安全 这句话我们常常能在各种新闻里看见 安全是发展的前提 发展是安全的保障 共同推进安全和发展 Z强调 要坚持依法治网 依法办网 依法上网 今年的国家网络安全宣传周在9月11日至17日全国范围内开展 今年的网安周以 网
  • 电脑重装系统后需要更新哪些驱动

    在电脑重装系统后 由于系统的重置 您需要重新安装和更新一些关键的驱动程序 以确保硬件设备正常工作和性能最佳化 以下是在电脑重装系统后需要更新的一些常见驱动程序 工具 原料 系统版本 win10系统 品牌型号 戴尔 XPS13 9350 37
  • H5新增标签 css图标库 web 前端 字体 问题

    目录 css图标库 web前端字体 CSS Hint H5新增标签 1
  • OpenCV学习(2)——图像的数据格式BGR

    OpenCV学习 2 图像的BGR格式解读 1 opencv读取的图片数据格式 2 BGR含义 1 opencv读取的图片数据格式 opencv读取的图片数据格式为numpy的nparray格式 一张二维图片是由像素点构成 如下图所示 其中
  • Mysql:增删改查基础语句

    mysql基础入门语句 增 INSERT INTO 表名 字段1 2 3 VALUES 值1 2 3 删 DELETE FROM 表明 WHERE 删除条件 不提供更新条件 则删除所有 改 UPDATE 表名 SET 字段1 新值 字段2
  • JavaScript学习 -- ajax方法的POST请求

    在Web开发中 通过POST请求将数据发送给服务器是一种常见的方式 使用jQuery可以轻松地发送POST请求 这需要使用jQuery的ajax 方法 本文将介绍jQuery如何使用POST请求发送数据 并提供一个实际的例子 使用 ajax
  • rcp命令

    http www cnblogs com peida archive 2013 03 14 2958685 html rcp代表 remote file copy 远程文件拷贝 该命令用于在计算机之间拷贝文件 rcp命令有两种格式 第一种格
  • Py_Finalize引发的异常

    Py Finalize引发如下异常 0x00007FFFE5A28D10 python38 dll 处 位于 MTFform exe 中 引发的异常 0xC0000005 执行位置 0x00007FFFE5A28D10 时发生访问冲突 解决
  • 项目系列之登录管理

    登录管理是现代计算机系统中关键的组成部分之一 那么本篇博客我们来简单了解一下登录的流程与前后端干了啥事 一 登录流程 用户打开登录页面 用户访问应用程序或网站的登录页面 此页面通常包含用户名 邮箱输入字段和密码输入字段 以及登录按钮 用户输