自研用户登录鉴权机制流程与实现过程

笔记:自研用户登录鉴权机制流程与实现过程

背景:

现在所在公司有一套自研的工程设计IDE,可以根据项目需求自主配置相关参数并应用于各个项目
该项目已经正式上线,且配置都已正常使用
但由于之前开发时并没有设计用户管理相关的机制,也就是说只要知道了项目地址任何人都可以进入项目修改配置,这明显具有很大的风险,需要设计开发一个用户管理的流程与机制

流程构想:

传统的登录鉴权与token管理主要依赖应用已有的 JWT 相关机制
但因为我比较喜欢发明创造,我想自己设计一套自有的用户鉴权机制,现初步工作如下:

  1. 用户表设计(数据库应用MongoDB,后台为Node.js Koa框架)
  2. 密码保护措施,前后台明文加密
  3. token的验证与管理
  4. 管理员与普通用户的权限分离(依赖于(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主要作用于用户登录过期时的检查与校验
在本流程中 tokenlastAwakeTime 互相配合,实现了用户的登录过期与防止双端登录的机制
具体流程如下:
用户登录过期与验证流程
以上流程可以根据token的验证机制排除双端登录的情况,同时也实现了用户登录的过期机制

4、管理员与普通用户的权限分离(依赖于1用户表设计)
根据(1)中数据表设计,我们可以在用户登录时传入isAdmin字段,在前端进行一个权限的判断
将isAdmin存入缓存,配置需要权限的功能,实现普通用户与管理员用户的区分

总体流程:

请添加图片描述

总结:

关于用户登录鉴权相关流程的解决方案其实非常多,我也许只是做了比较简单的一个设计,真正的复杂流程或许还需要在以后的开发研究过程中逐步探索。由于本人去年刚毕业,到如今真正入行不到一年且需要同时顾及前后台的开发,所以以上流程肯定有诸多不足,同时也望路过的各位大佬不吝赐教。

(全文完)

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值