基于 token 的登陆系统的实现

news/2024/11/16 1:24:39/文章来源:https://www.cnblogs.com/w-blogg/p/18328093
这是一段防爬代码块,我不介意文章被爬取,但请注明出处
console.log("作者主页:https://www.cnblogs.com/w-blogg");
console.log("原文地址:https://www.cnblogs.com/w-blogg/p/18328093");

最近公司搞新项目,有个需求登陆,简单记录一下:

  1. app 端实现一个登陆系统,七天内如果操作过,则不需要登陆,否则重新登陆
  2. 需要保证密码不泄漏
  3. 可通过邮箱、密码登陆
  4. 换绑邮箱需要验证老邮箱,再验证新邮箱
  5. 支持登出
  6. 更换密码需要验证邮箱
  7. 暂时支持邮箱注册

鉴权方案

  1. cookie-session 方式,安卓端对于 cookie 支持并不是很好
  2. token 方式,其中 JWT 需要进行加解密操作,并且不支持登出,如果要做需要存储,本身 JWT 理念就是服务端不存储数据,这样就违背了理念,不是很想采用这种方式
  3. Oauth2.0,与第三方登陆有关,得看需求后续要不要接入,与要实现的内容并不耦合

综上,可以选择 token 方式,结合 1 进行一定的改造

具体方案

邮箱登陆、访问其他接口大致流程图

提供发送验证码接口

  1. 需要注意要做防刷逻辑
  2. 不同接口的类型验证码不可混用,发送后的验证码放入 redis 后,注意后续清除操作

提供验证验证码的接口

  1. 验证成功后颁发 email token,这个接口只能说明邮箱存在,并且本人操作,并不意味着邮箱对应着系统中的用户,用户是否存在需要在后续接口中做验证
  2. 注意需要清除 1 中生成的验证码

提供密码登陆接口

  1. 注意密码需要使用 RSA 公钥加密,避免泄漏密码比对通过后,生成随机 access token 和
  2. refresh token,access token 放入 redis 中,一小时自然过期,refresh token 存入数据库,有效期七天

网关

  1. access token、email token 的验证逻辑统一在中实现,验证通过后,把用户 id 放入 header 中,方便 controller 层和后续业务直接取
  2. 由于验证验证码的流程被剥离出来后,后续分步骤验证,换绑等操作得以实现,只需要更改网关验证流程即可

提供邮箱登陆接口

  1. 由于在网关中已经验证 email token 有效性,直接验证邮箱是否存在对应用户,颁发 token 即可
  2. 剩余逻辑与 3 一样

提供 token 刷新接口

  1. 由于 access token 是自然过期的,需要使用 refresh token 申请新 token,并且给 refresh token 续期到七天后

其他

  1. 请求需要使用 https 加密
  2. 密码使用私钥解密验证成功后,需要使用 BCrypt + salt 加密,以保证密码加密并且相同密码加密结果不一致。
  3. 使用 Redis 共享 session 解决后续扩展导致的共享问题

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【HW系列】战后收尾(2):复盘提升

本章为该系列的第18篇,也是事后收尾阶段的第2篇。有些防守单位会以演习结束作为整个防守项目的结束,甚至会专门定制倒计时大屏,当时钟走到0秒的那一刻,所有人欢呼雀跃,组织庆功宴,和庆祝春节有一拼了,朋友圈里都开始有了年味。 但是,演练真的结束了吗?能与国家顶级攻击…

个人工作述职报告模板PPT转正述职报告通用工作总结汇报范文免费

不知道怎么写述职报告的同学,可以下载PPT模板,改一改就能用。模板文件一共有几个G,下载可能比较慢,建议选择转存,几秒就能保存全部文件,而且几乎不消耗数据流量。不需要开会员,文件可以免费保存,建议一次选择一个文件夹转存。手机APP保存的文件,可以同步在电脑端查看。…

【HW系列】事中迎战(5):作文大赛

本章为该系列的第15篇,也是事中迎战的第5篇。工作日报、技战法、布防报告、事件处置报告、协同联动报告、总结报告、应急响应报告……各种报告也算是演习工作中的一大特色了,曾经请教过一位资深业内人士,后续的演练有没有可能取消各种报告任务,他的回答是:“不太可能,毕竟…

【HW系列】事中迎战(6):应急响应

本章为该系列的第16篇,也是事中迎战的第6篇。如果说体现攻击队综合能力的方式是打攻防,那对于防守方来说,体现综合能力的方式就是应急响应。 今天不讲理论,本篇通过一个虚构的应急案例,来看看前几篇所讲的内容如何应用在实战中。我觉得如果攻击方死盯着一个目标打,是一定…

【HW系列】事中迎战(4):互联网蜜罐运营

本章为该系列的第14篇,也是事中迎战的第4篇。互联网蜜罐是演练期间高频出现的对抗手段,这一篇让我们聊聊演练期间如何发挥互联网蜜罐的价值。一、溯源反制 如果是采购的商业蜜罐产品,一般都会有溯源功能,可以获取攻击者指纹,从而对攻击者进行画像,有助于了解攻击者的身份…

【HW系列】事中迎战(3):情报处置

本章为该系列的第13篇,也是事中迎战的第3篇。井喷的情报算是演练期间的一大特色了,这一篇我们聊聊如何搞定这些情报。一、 情报收集 古往今来,情报一直都是兵家必争之地,演练期间尤其明显,各种情报的密度要比往常高很多,它们从四面八方传来,给我们带来了很多困扰。 情报…

【HW系列】事中迎战(2):安全事件监控与处置

本章为该系列的第12篇,也是事中迎战的第2篇,这一节让我们聊聊演练期间工作量最大的一项任务----安全事件监控与处置。一、 角色分组 还记得【红蓝/演练】-事前准备(1)之演练组织中介绍的组织架构吗,实战阶段的主力军就是以下三个组: 监控组,负责对安全告警进行处置,及时闭…

【HW系列】事前准备(10):事前阶段小结

本章为该系列的第10篇,也是事前准备阶段的第10篇,通过本章做个小结,来结束事前准备阶段的介绍,从下一篇开始,将正式进入事中迎战阶段。 有幸观摩过一场线下沙龙,在讨论过程中,我发现不同性质的企业,安全的建设方案完全不一样。当时在讨论邮件安全的议题,一位互联网公司…

基于Hive的大数据分析系统

1.概述 在构建大数据分析系统的过程中,我们面对着海量、多源的数据挑战,如何有效地解决这些零散数据的分析问题一直是大数据领域研究的核心关注点。大数据分析处理平台作为应对这一挑战的利器,致力于整合当前主流的各种大数据处理分析框架和工具,以实现对数据的全面挖掘和深…

【HW系列】事前准备(3):人员筹备

本章为该系列的第3篇,也是事前准备阶段的第3篇。 防护体系不是只有安全设备,人员也是防护体系中的重要因素,特别是强对抗场景下,需要提前准备好保障的人员,保障有人进行7*24小时监控,出现突发事件有能力协助处置。如果自己的人力资源不足,可以在预算范围内采购安全公司的…

Mybatis-plus之自动填充

开发时遇到这个bug原因:Mybatis-plus自动填充时选到了update,导致首次insert时id为null,但是数据库表不允许为null因此报错。 解决:填充策略改为insert_update即可Linux等环境软件安装

【HW系列】事前准备(1):演练组织

有幸多次参与过网络攻防对抗,有国家级、省市级的演习,有客户组织的模拟攻防、也有公司内部的红蓝对抗,打过攻击也参与过防守,现在回顾一下,其实有很多经验值得好好总结,因此萌生了站在防守视角把“红蓝/演练”写成系列文章的想法,来聊聊防守方那些事。 本章为该系列的第…