登录业务的重新梳理(用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全部干掉即可。

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

相关推荐
IT_陈寒1 小时前
Vue这个坑我跳了两次,原来问题出在这
前端·人工智能·后端
ServBay2 小时前
9 个 Python 第三方库推荐,不用 AI 都好像多出一个团队
后端·python
用户8356290780512 小时前
如何使用 Python 添加和管理 Excel 批注(完整示例)
后端·python
用户8356290780512 小时前
使用 Python 管理 Excel 工作表:创建、复制、删除与重命名
后端·python
lizhongxuan2 小时前
Agent Tool
后端
CaffeinePro2 小时前
依赖注入:FastAPI最核心的解耦能力案例解析
后端·fastapi
Assby3 小时前
从 Function Calling 到 MCP:理解 Agent 工具调用的底层通信机制
人工智能·后端
打字机v4 小时前
创建第一个spring-boot项目
后端
像我这样帅的人丶你还4 小时前
Java 后端详解(三):全局异常处理与 JPA 数据库映射
java·后端
前端Hardy4 小时前
又一个 AI 神器火了!
前端·javascript·后端