登录业务的重新梳理(用PHP做示例)

最近有个老项目为了过三级等保需要修改一些登录的逻辑,对代码重新进行梳理修改完成后,对登录的业务流程进行重新梳理


用户在完成登录操作以后,系统需要下发标识记录一下用户的登录信息。在之前非前后端分离的项目中,登录标识都是存储在服务器的session中的。当前的会话只要是session中存在标识,那么后续的访问都可以在session中直接获取到登录信息。但是随着技术的迭代与业务场景的复杂化,很多项目都变成了前后端分离的形式。后端下发token给前端以后,前端根据token去请求合法的数据。

相比于之前的session的存储标识的简单方式,这种复杂的前后端分离项目我们作为后端工程师需要如何去设计呢?

首先需要考虑的是登录所需要的业务场景

  • 登录成功下发token
  • 退出登录清除&&失效掉token
  • 超时无操作使token失效
  • 有操作时候刷新token
  • 同一个账号只允许单点或者多点登录
  • 冻结/禁用账号时候,踢掉当前已登录的账号
  • 。。。更多的实际情况

哈哈,我刚搞php的时候。只会扔个标识完事儿。现在做了一些项目了。开始搞这些业务的时候也了解这些业务可能会涉及到的场景,这些场景是需要在前期设计时候就设计好的,否则后期要修改可费劲了。

具体的场景分析

1 登录成功下发token

目前主流的基本都是 用jwt的方式去实现了。jwt提供了一套加解密的方案。把用户信息加密以后生成一个唯一标识,生成的token标识存储在redis中。

bash 复制代码
composer require firebase/php-jwt

2 退出登录清除&&失效掉token 登录下发的token是存储在redis中,只要用得到的token算出redis中存储的键干掉即可。

3 超时无操作使token失效 这个可以在存储redis数据时候设置好当前数据的过期时间。到期以后当前token就会失效掉。

4 有操作时候刷新token 这个是需要有正常访问的时候,重置掉redis中的那个过期时间。

5 同一个账号只允许单点或者多点登录 多点的情况不需要处理,但是假设是单点登录的情况。那么就需要记录下当前账号下发过的所有token。这就是令牌桶的一个概念。

6 冻结/禁用账号时候,踢掉当前已登录的账号 上面有了同一个账号所有的令牌的一个桶。踢掉的时候把当前账号所有的token全部干掉即可。

以上是对于登录逻辑的一些整理。

相关推荐
千里码aicood38 分钟前
【2025】springboot教学评价管理系统(源码+文档+调试+答疑)
java·spring boot·后端·教学管理系统
程序员-珍1 小时前
使用openapi生成前端请求文件报错 ‘Token “Integer“ does not exist.‘
java·前端·spring boot·后端·restful·个人开发
liuxin334455661 小时前
教育技术革新:SpringBoot在线教育系统开发
数据库·spring boot·后端
架构师吕师傅2 小时前
性能优化实战(三):缓存为王-面向缓存的设计
后端·微服务·架构
bug菌2 小时前
Java GUI编程进阶:多线程与并发处理的实战指南
java·后端·java ee
夜月行者4 小时前
如何使用ssm实现基于SSM的宠物服务平台的设计与实现+vue
java·后端·ssm
Yvemil74 小时前
RabbitMQ 入门到精通指南
开发语言·后端·ruby
sdg_advance4 小时前
Spring Cloud之OpenFeign的具体实践
后端·spring cloud·openfeign
猿java5 小时前
使用 Kafka面临的挑战
java·后端·kafka
碳苯5 小时前
【rCore OS 开源操作系统】Rust 枚举与模式匹配
开发语言·人工智能·后端·rust·操作系统·os