一:权限设计 RBAC
采用shiro安全框架
使用shiro,方便轻量,操作比springSecurity简单,不依赖其他框架,可独立运行。需要引入Thymeleaf前端模版,前后端分离的话也可以不加Thymeleaf模版。
不使用SpringSecurity,过于依赖spring,不适合所有的项目,如果有不使用spring的项目,便无法进行权限管理。
权限涉及: 1、认证。即登录,手机号+验证码登录,之前手机号发送验证码没有限制,每个手机号一天最多可以发5次验证码。
2、授权(最主要的)更基于数据库表的设计。
shiro三步:
1⃣️创建ShiroFilterFactoryBean,进行拦截请求。 anno不需要认证,外部可直接访问的资源,一般为登录页面,如果业务需要可以添加其他 ; authc需要认证和授权才可访问的资源。
2⃣️创建安全管理器DefaultWebSecurityManager
3⃣️自定义realm
3、会话管理 SessionManager
4、加密。如果需要账号密码登录的话,需要对密码进行盐值加密,存入库中。slatUtil
5、cache缓存 EhCacheManager(). 一级缓存,登录后,其用户信息、拥有的角色/权限不必每次去查,提高效率。
6、登录时,使用账号密码登录,记住我。cookieRememberMeManager()
7、退出,退出后跳转到登录页面,删除Session
二:表设计
1、用户表
tableName:user_info
field:uid 用户id
password 盐加密的密
salt 盐
2、角色表
tableName:role_info
field:role_id 角色id
tenant 租户
role_name 角色名称
role_key 角色权限字符串
status 角色状态
3、菜单表(权限表)(类型:目录,菜单,按钮)
tableName:menu_info
field:menu_id 菜单id
role_name 菜单名
tenant 租户
parent_id 父级菜单id
url 请求地址
menu_type 菜单类型(M 目录,C 菜单,F按钮)
visible 菜单状态(1隐藏,0显示)
4、角色菜单表
tableName:role_menu
field:menu_id 菜单id
role_id 角色id
5、用户角色表
tableName:user_role
field:user_id 用户id
role_id 角色id



