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

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

相关推荐
脚本自动化开发2 小时前
柔光屏平板怎么选?华为 MatePad Air Z 柔光版学
后端
程序猿DD3 小时前
OctaFuse 2.19.0:重做管理后台界面与交互,模型目录同步更新
后端
金銀銅鐵4 小时前
带您看懂字节码指令(一):一帧里有什么
java·后端·ai编程
码事漫谈5 小时前
Agent 测评是什么?大白话讲一讲
后端
皮皮林5516 小时前
在 IDEA 里斗个地主不过分吧!
后端
SomeOtherTime6 小时前
Rust所有权(AI回答)
开发语言·后端·rust
程序员cxuan8 小时前
离谱,AI 大佬顺手搓了个 YouTube ,而我顺手给他搓了个中文插件
人工智能·后端·程序员
学长毕设8 小时前
基于springboot科创竞赛信息平台-附源码
java·spring boot·后端
深蓝AI8 小时前
Gemini Decisions API 来了:一次前向打分取代逐字解码,校准误差 0.0250 才是 agent 分支调用的真门槛
人工智能·后端
学长毕设8 小时前
基于SpringBoot公务员考试交流平台-附源码
java·spring boot·后端