简介
本文介绍的是由SpringBoot2.7
+SpringSecurity5.7.3
+Vite
+Vue3
+ElementUI-Plus
为主要框架实现的前后端分离的认证权限系统。目前具有以下功能:
- 用户的注册/登录
- 通过用户名结合邮箱验证码方式找回密码
- 通过验证码激活绑定邮箱
- 用户个人中心
- 头像设置
- 基本信息设置
- 账号名称修改
- 密码修改
- 邮箱修改
- 用户管理:管理用户的账号状态和相关信息
- 角色管理:管理角色信息,为用户和接口配置权限时需要使用到该项
- 接口管理:该系统接口如果不配置的话,默认是管理员可以访问,如果需要设置为匿名或者指定角色用户可以访问可以在该功能项中设置
- 系统日志:用于记录和展示指定接口的日志信息,在系统中使用自定义注解——Log即可,它的值为对接口的描述
- 防暴力请求策略
功能介绍
用户注册
上图为注册页面,注册时需要提供用户名、邮箱地址和密码,其中用户名是以字母开头,由字母、数字或下划线任意组合的长度为5-16的用户名,密码为字母、数字或下划线任意组合组成的长度为6-18的密码。
同时注册时会校验用户名是否存在,如果存在会提示注册失败,除此之外邮箱也会进行校验,校验规则为如果邮箱已经存在并且已经激活则不可以使用改邮箱再次注册,如果邮箱不存在或者邮箱存在但是没有进行激活则可以使用改邮箱注册。
注册接口具有防暴力请求策略,如果在短时间内进行大量请求会提示请求频繁请稍后再试,如果再大量请求会拉入黑名单知道不再请求后2小时解除。
该策略的具体实现方式可以参考我的这篇博文《避免暴力请求的一种解决方式》
用户登录
上图为用户登录界面,登录只需要提供用户名和密码即可,这里没有进行验证码的校验,使用验证码的目的就是为了防止暴力请求,因此这里采用了根据请求频次来判断是否进行暴力请求,处理策略采用了和注册接口相同的处理方式,当短时间大量请求时提示请求频繁,请稍后再试,如果再次大量请求则列入黑名单知道不再请求后2小时解除。
该策略的具体实现方式可以参考我的这篇博文《避免暴力请求的一种解决方式》
登录成功后会自动进入主页,并且会在后面的请求中自动携带一个32为的校验token用于权限校验。
忘记密码
在登录页面点击忘记密码后会提示输入用户名,在输入用户名后点击发送验证码会在绑定的邮箱中接收到一封验证码的邮件
然后在页面中填入邮件接收到的四位验证码后重设密码即可
用户管理
进入首页的第一个页面就是用户管理页面,表格中会显示已注册用户的用户名、具备的角色信息、邮箱和注册时间,操作区域中可以对用户的账号信息进行修改,如下图
可以对账号名称、密码、邮箱和各种状态进行修改,需要注意的是,如果如果修改密码请直接输入对应的明文密码,系统会自动加密,回显中密码是当前密码加密后的字符串,状态的修改都是即时生效的,例如设置了用户账号过期后用户再次请求接口时回自动跳转到登录页面。
点击角色按钮可以为用户绑定指定的角色,角色以下拉框的形式进行选择。同时也可以点击顶部的角色修改按钮进行批量的修改。
点击表格中用户名的名称时可以显示用户的基本资料信息。
其余顶部操作栏功能为基本的增删改功能,就不做过多介绍。
角色管理
角色管理主要是对角色信息进行简单的增删改查维护。
接口管理
接口管理主要是对系统已有接口进行权限的配置管理,如果没有在这里配置默认是只有管理员可以访问,如果配置了匿名用户则该接口可以不用登录就可以访问,也可以指定对应的角色可以访问指定的接口。该配置也是即时生效的。
个人中心
个人中心页面是针对当前登录用户的设置页面,可以设置自己的头像、基本资料信息,如果注册的邮箱没有验证激活的话可以激活邮箱,也支持用户名修改、密码修改和邮箱修改,需要注意的是如果当前邮箱已经激活,那么在修改邮箱后需要重新激活。
退出
右上角除了个人中心外还有一个退出到功能,通过该接口退出后可以防止使用token请求接口,当点击该退出时相应的token和redis缓存信息会立即删除。
仓库地址
服务端仓库地址: https://gitee.com/hlovez/devcat-sso.git(已过期,正在增加功能,可私信获取
前端仓库地址:https://github.com/xiaohu-pro/devcat-sso-vue.gi(已过期,正在增加功能,可私信获取)
最新项目地址可访问:https://www.devcat.cn
项目环境
数据库:mysql8
缓存:redis5
springBoot2.7
springSecurity5.7.3
开发工具:sts4