当前位置:网站首页>自研用户登录鉴权机制流程与实现过程
自研用户登录鉴权机制流程与实现过程
2022-08-02 03:34:00 【deft_】
笔记:自研用户登录鉴权机制流程与实现过程
背景:
现在所在公司有一套自研的工程设计IDE,可以根据项目需求自主配置相关参数并应用于各个项目
该项目已经正式上线,且配置都已正常使用
但由于之前开发时并没有设计用户管理相关的机制,也就是说只要知道了项目地址任何人都可以进入项目修改配置,这明显具有很大的风险,需要设计开发一个用户管理的流程与机制
流程构想:
传统的登录鉴权与token管理主要依赖应用已有的 JWT 相关机制
但因为我比较喜欢发明创造,我想自己设计一套自有的用户鉴权机制,现初步工作如下:
- 用户表设计(数据库应用MongoDB,后台为Node.js Koa框架)
- 密码保护措施,前后台明文加密
- token的验证与管理
- 管理员与普通用户的权限分离(依赖于(1)用户表设计)
1、用户表设计
const userSchema = {
"_id" : 'String',
"password" : 'String(加密)',
"token" : 'String',
"lastAwakeTime" : 'Number(时间戳,用户最后活跃时间)',
"phoneNumber" : 'String',
"employeeNo" : 'String',
"username" : 'String',
"position" : 'String?',
"email" : 'String?',
"isAdmin" : 'Boolean',
"createdAt" : 'Number(时间戳)',
"lastUpdatedAt" : 'Number(时间戳)',
}
2、密码保护措施,前后台明文加密
在公司很多应用中,前台用户提交的用户名与密码并未使用加密流程,比如以下情况:
以上情况我认为是一个应用不严谨的表现,这种情况在 2B 应用中倒还好,但一旦应用于比较敏感的 2C 应用中时,这就成为了一个明显的漏洞。根据这种情况,所以我决定首先在前台实现密码传输加密,对用户输入的结果进行一个保护,传入后台后再进行一个二次加密,最后对比验证,具体流程如下:

这保证了前台是密文传输的同时在后台进行二次加密保证了密码的安全性,添加用户流程思想基本相差无几,在此不过多赘述
3、token的验证与管理
token主要作用于用户登录过期时的检查与校验
在本流程中 token 与 lastAwakeTime 互相配合,实现了用户的登录过期与防止双端登录的机制
具体流程如下:
以上流程可以根据token的验证机制排除双端登录的情况,同时也实现了用户登录的过期机制
4、管理员与普通用户的权限分离(依赖于1用户表设计)
根据(1)中数据表设计,我们可以在用户登录时传入isAdmin字段,在前端进行一个权限的判断
将isAdmin存入缓存,配置需要权限的功能,实现普通用户与管理员用户的区分
总体流程:

总结:
关于用户登录鉴权相关流程的解决方案其实非常多,我也许只是做了比较简单的一个设计,真正的复杂流程或许还需要在以后的开发研究过程中逐步探索。由于本人去年刚毕业,到如今真正入行不到一年且需要同时顾及前后台的开发,所以以上流程肯定有诸多不足,同时也望路过的各位大佬不吝赐教。
(全文完)
边栏推荐
- 同时求最大值与最小值(看似简单却值得思考~)
- Lightly:新一代的C语言IDE
- jni中jstring与char*互转
- install 命令
- 机械臂运动学解析
- 【plang 1.4.5】编写坦克(双人)游戏脚本
- R语言 —— 多元线性回归
- 2019 - ICCV - 图像修复 Image Inpainting 论文导读《StructureFlow: Image Inpainting via Structure-aware ~~》
- 2020 - AAAI - Image Inpainting论文导读《Learning to Incorporate Structure Knowledge for Image Inpainting》
- 基础IO(下):软硬链接和动静态库
猜你喜欢
随机推荐
install 命令
【LeetCode】求和
滑动窗口方法
【MQ-3 Alcohol Detector and Arduino Detect Alcohol】
bluez5.50+pulseaudio实现蓝牙音响音频播放
音视频文件码率与大小计算
最长公共子串
Chrome 里的小恐龙游戏是怎么做出来的?
电脑基本知识
调试九法准则
逆序对数量与归并排序
字符串匹配(蛮力法+KMP)
二进制中1的个数
2020 - AAAI - Image Inpainting论文导读《Learning to Incorporate Structure Knowledge for Image Inpainting》
【详解】优先级队列的底层实现
rosdep update failure solution (pro-test effective)
jni中jstring与char*互转
剑指Offer 31.栈的压入、弹出
onvif/rtsp转gb28181协议,无缝对接国标平台
剑指Offer 35.复杂链表的复制









