生活服务类平台产品研发-账户系统(三户)
三户:客户、用户和帐户。
一个账号权限管理系统,主要包括三个元素:账号、角色、权限。我们所要管理的,也就是账号、角色和权限之间的关系。
权限管理包括用户身份认证和授权两部分,简称认证授权。对于需要访问控制的资源用户首先经过身份认证,认证通过后用户具有该资源的访问权限方可访问。
身份认证,就是判断一个用户是否为合法用户的处理过程。最常用的简单身份认证方式是系统通过核对用户输入的用户名和口令,看其是否与系统中存储的该用户的用户名和口令一致,来判断用户身份是否正确。对于采用指纹等系统,则出示指纹;对于硬件Key等刷卡系统,则需要刷卡。
如果说一个客户使用了多个产品,那么一个客户就会对应好几个用户(即产品)
1.会员体系 (注册,完善信息)
2.账户体系 (金融账户)
3.管理员(账号分配,信息完善审核)
4.服务人员 (注册,完善信息,审核)
会员,服务人员,管理员存储到不同的数据表中
不同的微服务一般是存储在自己的数据库中,独立开发和部署。微服务拆分之前需要先考虑怎么合并.
不同微服务一般分不同的git 仓库托管,方便协作
身份认证和访问控制
用户认证功能和权限控制
jwt-token 和 RBAC
用原生SQL 初始化数据库和数据表
用户登录,注册,信息完善,信息查询,用户管理功能,角色,分组,用户标签,用户操作日志记录。第三方登录,授权体系,积分体系
用户等级,会员系统
Oauth2和jwt是完全不同的两种东西,一个是授权认证的框架,另一种则是认证验证的方式方法(轻量级概念)JWT 适合前后端分离的微服务
内置功能
1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持权限。
3. 岗位管理:配置系统用户所属担任职务。
4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
7. 参数管理:对系统动态配置常用参数。
8. 通知公告:系统通知公告信息发布维护。
9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
10. 登录日志:系统登录日志记录查询包含登录异常。
11. 在线用户:当前系统中活跃用户状态监控。
12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
基于角色的权限访问控制(Role-Based Access Control)
角色不能随意删除或禁用。角色是一个中间量
账号、角色、权限。
授权围绕着角色来做,不要在用户上直接授权!
让每一个新建(注册、创建)的用户都有一套默认的角色,让系统分类有序、逻辑通顺。
权限可以分为三种:页面权限,操作权限,数据权限。
用户认证,企业认证
下面是SAM权限系统模型中的一些通用语言:
- 员工:角色的载体,权限的实行者
- 角色:角色是权限集进一步映射。业务系统可动态管理角色,各业务为方便用户使用可提供给默认角色列表,满足不同的员工权限
- 权限点:全局唯一的用来表示某一个功能点对应的权限的状态
- 功能点:逻辑上定义的用来描述系统资源的最小基本单位,每一个功能点都对应唯一一个权限点
- 功能集(权限集):即功能点的集合,有一组功能点按照特定格式进行组合
- API:请求系统资源的通道和动作,拥有功能集属性
- 菜单:将系统资源组织后展示给请求者的入口,拥有功能集属性
- 页面:被当做一种特殊的菜单,拥有URL属性
- 按钮:页面中更细粒度的资源入口,被当作一种特殊的菜单
帐号的两个层级:企业(管理员)帐号、普通帐号
这里需要注意的是2者区别:
- 帐号禁用:在登录系统时多次输入密码错误,系统会因为帐号安全问题暂时把禁用掉。或涉及到帐号被盗等场景需立马禁用,修改密码等操作。
- 帐号停用:员工离职,但是在职时所有的操作记录信息还存在,所以设置为停用。(ps:可以跟人事系统打通,人事那边设置某员工离职后,所有系统账号自动设为停用。)
参考链接:http://www.wulihub.com.cn/go/4Jrn8J/start.html#g=1&p=%E7%99%BB%E5%BD%95%E9%A1%B5%E9%9D%A2&c=1
====================================================================================================================
权限是什么?
权限管理是后台系统经常会涉及的模块,主要是对不同的用户访问资源进行权限的控制,避免因权限控制缺失或操作不当引发的风险问题,如操作错误,账号过期,隐私数据泄露等问题。
功能划分
权限管理系统总体分为:授权与认证
。
授权
:指将权限授予角色或用户。认证
:指用户访问资源的某些操作时,根据授权,判断是否允许用户的访问。
基础概念
权限模型
- 权限设计模型是RBAC模型,基于角色的访问控制(Role-Based Access Control)。抽象为
Who(权限的拥用者或主体 Group,Role)对What(Which)(权限针对的对象或资源)进行How(具体的权限)的操作
。构成“用户-角色-权限-资源”的授权模型。
权限名词
资源 (Resources)
:资源就是想要的到的最终物质。菜单、页面、按钮、API、数据等均为资源。用户 (User)
:是发起操作的主体,按类型分可分为2B和2C用户,可以是后台管理系统的用户等。角色(Role)
:是中间量,连接了用户和权限的关系,每个角色可以关联多个权限,同时一个用户关联多个角色,那么这个用户就有了多个角色的多个权限。使得授权操作便捷易拓展。角色不能随意删除或禁用。权限 (Permissions)
:是用户可以访问的资源。- 页面权限:即用户登录系统可以看到的页面,由菜单来控制,菜单包括一级菜单和二级菜单,只要用户有一级和二级菜单的权限,那么用户就可以访问页面。
- 操作权限:即页面的功能按钮,包括查看,新增,修改,删除,审核等,用户点击删除按钮时,后台会校验用户角色下的所有权限是否包含该删除权限。
- 数据权限:即不同用户在同一页面看到的数据是不同的,比如财务部只能看到其部门下的用户数据,比如杭州分公司用户登录系统只能看到杭州的数据。(解决方案一般是把数据和具体的组织架构关联起来,举个例子,在给用户授权的时候,用户选择某个角色同时绑定组织如财务部或者合肥分公司,那么该用户就有了该角色下财务部或合肥分公司下的的数据权限)
用户组 (Group)
:当平台用户基数增大,角色类型增多时,管理员直接给用户组分配角色,用户组里的每个用户即可拥有该角色,而不用操作每个用户完成授权。组织(Organization)
:可以把组织与角色进行关联,用户加入组织后,就会自动获得该组织的全部角色,无须管理员手动授予,同时用户在调岗时,只需调整组织,角色即可批量调整。组织的另外一个作用是控制数据权限,把角色关联到组织,那么该角色只能看到该组织下的数据权限。组织是一个集合。职位(Post)
:每个组织部门下都会有多个职位,每个职位的权限是不同的。职位是针对人的个体。菜单(Menu)
:用户登录系统可以看到的页面,可以有多层级。
关联关系
- 用户和角色是多对多的关系
- 角色和权限是多对多的关系
授权流程
手动授权
:给用户添加角色,给角色添加用户。给用户添加角色就是在用户管理页面,点击某个用户去授予角色,可以一次为用户添加多个角色;给角色添加用户就是在角色管理页面,点击某个角色,选择多个用户,实现了给批量用户授予角色的目的。审批授权
:即用户申请某个职位角色,那么用户通过OA流程申请该角色,然后由上级审批,该用户即可拥有该角色,不需要系统管理员手动授予。
权限系统需求
- 系统拥有一个超级管理员,拥有系统所有权限
- 不同的用户在页面中可以看到的元素和操作不同
- 不同的用户对页面的访问权限不同
- 操作包括:增删改查审核等
- 用户拥有多个角色,那么用户的权限是这些角色权限的合集
- 授权操作时选中即生效,无需提交
- 用户(User)(帐号)可以拥有多个角色(Role),角色可以被分配给多个用户
- 每个用户组的管理员都具有创建角色的能力,并且自己管理这自己的角色
- 每个用户组的管理员都有添加用户,授予用户权限的能力
- 用户仅仅是纯粹的用户,用来记录用户相关信息,如用户名、密码等,权限是被分离出去了的。用户(User)要拥有对某种资源的权限,必须通过角色(Role)去关联。
- 角色是使用权限的基本单位,拥有一定数量的权限,通过角色赋予用户权限
- 权限指用户根据角色获得对程序某些功能的操作,例如对文件的读、写、修改和删除功能
- 账号有效期
- 注意区分角色和职位
- 给组织的总部分配账号。组织的管理员,然后自己维护下级数据
数据表
- 用户表(帐号)(UserInfo)(将用户的最基本的信息进行管理(在正常的业务系统中可进行扩展用户信息),比如姓名、有效期等)
- 角色表(RoleInfo)(对角色基本信息进行管理。用户可以自定义成各种各样的角色)
- 菜单表(MenuInfo)
- 用户角色表(UserRole)(在用户与角色之间建立起关联,给用户授予哪些角色权限(同一用户可以有多个角色),也可以按角色添加用户,比如将“员工”角色授予公司所有人,而不用按用户一个一个地授权)
- 角色菜单表(RoleMenu)
- 角色权限表 (将角色与系统中的权限点关联起来,也就是完成授权的动作)
- 操作表(用来存放用户自定义的各种功能操作,比如新增、修改、删除等)
- 页面元素表
参考:https://zhuanlan.zhihu.com/p/73414693
参考:https://tech.youzan.com/sam/ 有赞权限系统(SAM)