当前位置: 首页 > news >正文

对注册,登录相关的概念的汇总

如果从业务上理解it系统的设计

其实第一步就是,用户与系统的关系。
这里汇总一下相关知识和概念
暂时先想到这么多,
其实所谓的登录,就是把用户的信息存在redis,或者java内存里,然后用到的时候随时取,以及身份权限,校验等

我们分层理解一下

1.功能层面的理解

1.注册-登录
2.三方登录

2.技术栈层面实现的理解

1.jwt+threadlocal+拦截器

2.jwt+springsecurity

3.jwt+shrion

4.无感刷新,双token机制

5.jwt+satoken。

你的理解很到位,从业务视角切入系统设计确实是抓住本质的好方法。用户与系统的关系是业务核心,你列出的知识框架也涵盖了功能和技术实现层面。

基于你的框架,我为你进行补充和深化,形成一个更完整的知识体系:

一、功能层面的深化 (从用户行为角度)

除了注册登录,用户与系统的关系还体现在整个使用生命周期中:

  1. 会话管理

    • 记住我:在关闭浏览器后仍保持登录状态,通常通过持久化Cookie实现。
    • 多点登录/设备管理:一个账号在多台设备上登录,以及如何在应用内查看并踢掉其他设备。
    • 单点登录:在一个大型系统(如阿里全家桶)中,一次登录访问所有相互信任的应用。
  2. 权限与个性化

    • 角色与权限:登录后,不同用户(普通用户、管理员)能看到什么、能做什么?这是功能层面需要明确的。
    • 个性化设置:用户对系统外观、布局、通知方式的偏好设置,这些设置与用户身份绑定。
  3. 安全与审计

    • 敏感操作验证:修改密码、支付等关键操作前,要求再次输入密码或进行二次验证。
    • 操作日志:记录用户什么时间、什么IP做了什么,方便追溯。

二、技术栈层面的补充与梳理

你列的4点很好,我们把它结构化一下,可以补充几个关键概念:

1. 核心概念补充
  • 认证:解决“你是谁”的问题(登录)。
  • 授权:解决“你能干什么”的问题(权限控制)。
  • 凭证:证明你身份的东西,如密码、手机验证码,或登录成功后的Token。
  • 上下文:用户登录后,系统需要在一次请求的各个环节都能知道“当前用户是谁”。ThreadLocal就是用来解决这个问题的。
2. 技术实现方案的重新组织

我们可以按照从简单到复杂,或从核心机制到完整框架的方式来组织:

核心机制(无论用什么框架都离不开的基础):

  • 认证信息传递与存储JWT + ThreadLocal + 拦截器/过滤器
    • JWT:一种无状态的、包含用户信息的Token。服务端无需存储会话,只需验证JWT签名即可。
    • 拦截器/过滤器:在请求到达Controller之前,拦截请求,从Header中取出JWT,验证有效性。
    • ThreadLocal:验证通过后,将解析出的用户信息存入ThreadLocal,这样在本次请求的任何地方(Service层、Util类)都能方便地获取当前用户。请求结束后记得清除,防止内存泄漏。

增强方案与高级特性:

  • 安全性增强JWT + 双Token机制
    • Access Token:短时效(如15-30分钟),用于正常访问API。
    • Refresh Token:长时效(如7-30天),存储在安全的地方(如HttpOnly Cookie),专门用来在Access Token过期时获取新的Access Token。这种方式在保证安全的同时,也兼顾了用户体验(无需频繁重新登录)。

成熟框架(生产环境推荐):

  • 轻量级框架Sa-Token

    • 你提到的Sa-Token是一个Java生态中非常优秀的轻量级权限认证框架。它封装了上述所有核心机制和高级特性,API设计简洁,开箱即用。支持OAuth2.0单点登录无感刷新等,非常适合现代Spring Boot项目。
  • 重量级/传统框架

    • Spring Security:Spring家族的事实标准,功能极其强大,几乎可以满足任何复杂的安全需求。但缺点是学习曲线陡峭,配置相对复杂。常与OAuth2、JWT配合使用。
    • Apache Shiro:一个功能全面的Java安全框架,相比Spring Security更轻量、更易理解,API也更直观。在非Spring项目或对Spring Security不太熟悉的团队中,Shiro是很好的选择。

三、从功能到技术的映射(设计思维)

理解完功能和技术的知识点后,最关键的一步是如何将两者结合起来。当你接到一个业务需求时,可以这样思考:

业务需求:“我们需要让用户能用微信登录,并且在30天内不用重新登录。”

设计思路拆解:

  1. 功能映射

    • “能用微信登录” ->三方登录(OAuth2)
    • “30天内不用重新登录” ->持久化会话(Remember Me)双Token机制
  2. 技术选型与实现

    • 三方登录:可以使用Sa-TokenSpring Security内置的OAuth2客户端功能,对接微信开放平台。
    • 30天免登:可以采用双Token机制。将Refresh Token的有效期设为30天,存储在数据库中或浏览器的HttpOnly Cookie中。
    • 整体流程:用户首次通过微信授权后,系统生成一对Token。后续请求携带Access Token,过期后由前端用Refresh Token自动换取新的Access Token,对用户完全无感。

总结

你的第一步“用户与系统的关系”是绝对正确的。在这个基础上,一个完整的知识体系可以总结为:

  1. 业务功能层:识别出会话管理、权限、安全审计等具体需求。
  2. 核心机制层:理解认证、授权、凭证、上下文这些不变的概念,以及JWT + ThreadLocal + 拦截器这个核心流程。
  3. 技术实现层:在核心机制之上,根据复杂度选择直接增强(如双Token)或引入成熟框架(Sa-Token、Spring Security、Shiro)。

这样层层递进,无论面对何种业务场景,你都能清晰地知道如何将业务需求转化为坚实的技术设计。

http://www.jsqmd.com/news/441215/

相关文章:

  • 【教程4>第11章>第14节】基于FPGA的图像直方图提取与图像分割算法——理论分析与matlab仿真
  • Performance Fish:重构RimWorld性能的全方位解决方案
  • 5分钟接入20+数据源:开发者必备的一站式开放API平台
  • 5步实现米游社自动签到:让游戏福利获取效率提升90%
  • 通义千问3-Reranker-0.6B企业应用:HR系统简历-岗位JD语义匹配重排实践
  • RPG Maker资源破解全攻略:文件解密与工具使用终极指南
  • 小白也能玩转Qwen3-VL:一键部署图文对话AI实战教程
  • 3个强力步骤解决数字内容限制:技术工具破解与格式转换全指南
  • [PDF解析] Zotero Reference高效使用技巧指南:从入门到精通学术文献管理
  • 3大核心优势!国家自然科学基金申请书LaTeX高效解决方案:告别格式困扰,专注科研创新
  • 浏览器电路仿真工具CircuitJS1:零基础入门指南
  • 实时翻译技术突破:Translumo如何重构跨语言信息获取方式
  • Z-Image-Turbo_Sugar脸部Lora基础教程:3步完成Ubuntu20.04环境部署
  • ChatGPT突然变成英文且无响应?深度解析与实战修复指南
  • Ollama实战:Llama-3.2-3B文本生成服务部署,支持批量处理文本
  • 实测DeepSeek-OCR-WEBUI:复杂背景图片文字提取效果惊艳
  • 春联生成模型-中文-base开源可部署:完全离线、数据不出域的春节AI方案
  • Qwen3-ASR-0.6B模型压缩:轻量化部署实践
  • Windows11任务栏拖放功能修复工具:从操作痛点到高效解决方案
  • ncmdump:NCM文件解密与格式转换从入门到精通完全指南
  • Qwen2-VL-2B-Instruct惊艳效果:遮挡/裁剪图片仍保持核心语义向量稳定性
  • 3大维度解析Cesium-Wind:让气象数据在三维地球绽放生命力
  • 三步搞定键盘优化工具:机械键盘连击修复全方案
  • AllData数据中台:赋能企业数字化转型的实战指南
  • M2FP在虚拟试衣中的应用:人体解析实战教程
  • Blender 4.1 GoB插件数据流转异常的3大突破方案:跨软件协同工作流优化指南
  • 为什么传统MCU封装范式在存算芯片上全面失效?深度拆解C语言指令集封装的5维重构逻辑(含23个真实Silicon Bug案例)
  • HY-Motion 1.0与Blender联动教程:生成的BVH文件如何导入使用?
  • 跨平台控制新体验:JoyCon开源驱动技术指南
  • Performance Fish:RimWorld性能优化解决方案实战指南