> 文章列表 > 简述一个平台的权限设计

简述一个平台的权限设计

简述一个平台的权限设计

1.游客与用户
对于新的访问对象,平台一般有两种处理方式:
一种是部分资源可以不用登录直接访问,比如抖音的视频观看,但其他功能需要登录后才能操作,比如点赞、收藏
一种是自动登录生成一个用户ID,显示名字为游客,并提示用户绑定身份,该方式页游使用较多,用于引导用户深入体验并最终绑定个人信息充值

现在各种平台对已经淡化了注册的概念,注册和登录差不多是同一个功能
无论以何种方式登录,登录之后就成为正式用户,会具备一般权限,比如对账号进行设置
当前登录方式一般有:短信登录、邮箱登录、第三方账号登录(一般为SSO登录)

2.用户角色分类
C端用户角色一般会根据用户信息进行分类,区分度一般有以下几个方面:
<1>信息的完整程度,某些权限需要账号信息做支撑,比如进行了身份认证,才具备发表文章的权限
<2>特定用户角色:企业账号、媒体账号等
<3>等级角色:VIP、VVIP,或者按照活跃度、充值金额等映射的xx级
第一种具有普适性,是一种基于法律层面的限制,不用于用户账号权限区分
第二种绝大多数只会作为荣誉标识使用,一般没有操作特权,但该账号以及账号下的内容会存在优先推荐等优势
第三种属于平台对忠实用户/高价值用户的回馈,会有特权功能,比如自如的服务费打折

内部管理平台则会按照运营角色进行分类,不同层级的审核权限逐级递增

3.平台内容分类
平台的内容会根据类别进行区分,从而对用户进行限制(不是推荐内容的区分),比如某些内容只能VIP会员有权限获取
内部管理平台同样有此类限制,比如用户信息的查看、敏感视频的审核,不同内部账号同样存在权限限制

4.平台内容和用户角色组合与增删改查
在设计开发与使用时,用户信息是一张表、角色分类是一张表、平台内容是一张表
每张表对应着不同功能模块的CRUD
单个资源进行权限判定时需要进行组合查询,对涉及到权限限制的多个表的内容自动进行组合判定

5.角色权限修改
角色权限的修改属于单表修改,但要注意到互相之间的影响,防止出现越权问题

6.用户态失效、重置
用户账号会存在状态字段,不同状态代表账号的不同属性,比如已删除、已封禁、停用等,状态会对权限的判定产生组合影响
重置要注意的是:历史账号特别是停用账号重置为可用账号之后,是否新的权限对其默认关闭,方式权限漏放

7.特权
一般内部平台经常会遇到某些人希望开通特权的情况,这种最好配置成白名单,方便管理,但要注意的是,如果特权对每一项操作都生效,需要考虑数据的完整性。比如数据直接审核通过,略去中间流程,在后面查看的时候需要兼容中间流程丢失的数据缺失问题。

8.配置更新、同步与缓存
这部分涉及到前端和后端。前端页面在加载的时候会从后端拉取配置,根据配置里面的权限内容,展示和隐藏部分菜单、页面、信息、操作按钮。而后端会在收到数据管理请求时,根据配置对用户&数据&操作的权限进行判定。

当配置数据较大时,为了减少处理时间,需要将配置进行缓存,用redis之类的内存数据库进行加速,这样前端可以快速获取到配置。

有缓存就需要考虑到同步问题,当涉及到权限的任何一条信息被增删改时,都需要触发更新配置的消息队列,实效性需要保证。

9.内容的状态流转与角色的卡点确认
在涉及到审核时,会出现角色卡点的情况,每一步都需要对应的人员点击确认,才能往下走。

这里考虑的一种情况时,在该流程未走完,而这一步分配的人员的角色发生改变时,如何自动的进行流程更新。