首页 > 其他分享 >SimpleAdmin手摸手教学之:登录鉴权

SimpleAdmin手摸手教学之:登录鉴权

时间:2023-01-08 13:22:38浏览次数:35  
标签:登录 SimpleAdmin redis 验证码 接口 用户 token 手摸 鉴权

一、前言

不管是作为一个后台管理系统,还是客户端应用系统,登录都是一个必备的功能,基本上每个程序员都写过登录接口,基本就是用户输入账号密码然后去数据查比对是否一样,一样就返回登录成功,不一样就返回登录失败。当然这只是登录最简单的实现,其实登录是一个非常有技术含量的功能,本系统没有使用任何权限框架,而是基于JWT+Redis 自己手撸实现的一套鉴权逻辑,采用了B、C端多账号体系认证,B端代表后台用户,C端代表前台用户,可以根据不同的端来处理登录逻辑,目前只实现了B端登录,如需C端请自行扩展。

二、登录设计

本系统中登录分为账号密码登录、手机号登录和第三方登录,目前已经实现前面两种,第三种需要自己拓展实现。

2.1 账号密码登录

基本流程图:

进入登录页面之后会读取系统配置判断是否需要验证码,如果需要验证码就会去请求验证码接口获取验证码并显示在页面上。

除了用户名密码,还需要将验证码和请求号传入登录接口供后端验证,不然这个验证码就形同虚设了。

后端接收到前端传过来的账号密码和验证码,判断验证码是否正确,解密之后的密码是否和数据库一致,如果吻合,则生成token返回给前端

在ExecLoginB方法中,主要会做三件事:

  1. 生成token:前端拿到token去请求接口
  2. 将token写入redis:只有redis存在的token才有权限请求接口
  3. 发布登录事件总线:更新用户信息,登录Ip等信息。

2.2 手机号登录

基本流程图:

点击获取验证码按钮获取短信验证码

接下的流程就和账号密码登录一样了,携带手机号和验证码取请求手机登录接口就行。

三、单用户登录

单用户登录是指在同一时间,同一客户端只允许一个人访问系统,当用户登录之后,其他已经登录的用户将被强制下线。本系统默认是多用户登录的,也就是一个账号可以在多个浏览器登录,想要开启单用户登录,只需要在系统设置里打开单用户登录开关就行。

原理也是很简单,我们登录之后的token都会存在redis,当用户请求接口的时候会携带redis,如果redis有该token就允许请求,否则返回401,这里我们只要将其他token给去了,只留当前用户的token。

顺便通知其他用户下线。

其他用户会收到下线消息。

四、自动刷新token

标签:登录,SimpleAdmin,redis,验证码,接口,用户,token,手摸,鉴权
From: https://www.cnblogs.com/huguodong/p/17034445.html

相关文章