IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 权限平台的设计关系 -> 正文阅读

[开发工具]权限平台的设计关系

常规权限系统的 结构

几个概念
租户层 或 平台层(最大的一层,下面的创建都得依赖它)

用户
(用户和角色间,有分配关系)

角色
(角色和客户端间,有分配关系)

客户端

接口/权限/资源(这里的接口权限,不代表只是接口,而是系统所有资源)
(角色和接口权限件有授权分配关系,
切接口权限只 直接 分配授权给 角色)

从上面可以看出,一切以角色为核心,

客户端访问接口,是 客户端 <=> 角色 <=> 接口/权限

每个客户端 有一个 authentic token,客户端和角色之间 用 token联系,即客户端 token 角色 表
角色和接口权限,有角色 接口权限表
即通过 token 可以 找到 可以访问的接口权限
所以,只要是客户端 访问 接口,都得带上 token

所以,只要访问接口,必须最终得 带着角色信息去访问,客户端token最后也是角色,自己写接口 去访问,也是带着 @Permission(level = ResourceLevel.ORGANIZATION) 去访问,

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Permission {

    /**
     * API编码,默认为 {@link Api#tags()} + 方法名 组成 API编码
     *
     * @return 权限编码
     */
    String code() default "";

    /**
     * 角色
     * 
     * @return 角色数组
     */
    String[] roles() default {};

    /**
     * 级别
     * 
     * @return 级别
     */
    ResourceLevel level() default ResourceLevel.PROJECT;

    /**
     * 登陆后即可拥有的权限
     * 
     * @return 是否登录可访问接口
     */
    boolean permissionLogin() default false;

    /**
     * 公共权限,不需要登录就可访问
     * 
     * @return 是否为公开接口
     */
    boolean permissionPublic() default false;

    /**
     * 只能服务内部调用,不能通过网关访问
     * 
     * @return 是否为内部接口
     */
    boolean permissionWithin() default false;

    /**
     * 需验证签名才可访问的接口
     *
     * @return 是否为签名接口
     */
    boolean permissionSign() default false;

    /**
     * API标签
     *
     * @see ApiTag
     * @return API标签
     */
    String[] tags() default {};

    /**
     * 接口变更状态,默认未做任何变更 <p></p>
     * 如:<i>/v1/xx</i> 升级至 <i>/v2/xx</i>,需在 <i>/v2/xx</i> 上配置 status = {@link PermissionStatus#UPGRADE},并配置原API
     *
     * @return 变更状态
     * @see Permission#upgradeApiPath()
     * @see Permission#upgradeApiMethod()
     */
    PermissionStatus[] status() default { PermissionStatus.NONE };

    /**
     * 升级的API
     */
    String upgradeApiPath() default "";

    /**
     * 升级的API方法
     */
    HttpMethod upgradeApiMethod() default HttpMethod.GET;

}

这个注解,就定义了 你访问的 角色是啥权限的

soga,访问 hezero权限平台控制的接口,必须得要角色

所以每个接口 上平台后,都得给 角色 分配 接口权限,但是Hzero,有些角色,是自动拥有,所有接口的权限的,底层有代码自动分配,而且有些客户端是绑定这些角色的,所以 你用这些客户端的token 和 这些角色 可以访问任何接口,不懂手动分配 接口权限

权限系统的 组织架构

用户
(员工和用户之间,互相分配)

员工
(员工和组织架构,相互分配)
组织架构
(组织架构,可以将组织,树形管理起来,然后组织下面,分配员工,这样完整的组织架构就出来了)
即 (用户 员工 组织架构) 表

工作流…

在组织架构下,都是以员工 为 基础来进行的,而不是用户,等于是,某个用户登入系统后 以某种员工的身份,来开启某个工作流

而且组织架构中人员的存在 也是 以员工为基础的,而不是系统用户,员工才是工作人员的身份,而用户只是系统的使用权

可以说用户 只是系统的使用权,而对于公司组织来说,是看以员工为基础的,登入系统需要用户登入,而业务记录,是员工

简单来说,用户是来 记录登入系统的(以公司人员来说),当然是客户系统的用户,可以 在业务里记录用户信息

角色 是来 对应权限的

组织是来管理 公司架构的

人员 是来记录 公司的业务信息的基础的

这4者创建时,或者所有层面(包括,组织层....)没有任何关系,都是相互分配关系后,就可以用从这几个层面,来共同 操作系统,一个层面是无法操作系统的

例如只有用户,没有角色,那么,你就无法获得任何权限,没有用户,那么你连系统都登不进去,所以 用户是必须有的,其他所有,层面都得跟用户建立联系,

但是在 具体某个操作时,我们只管 对应的层次 的功能,例如用户A登入,此时角色是B,B角色有操作 C接口的权限,那么在操作权限 这个角度,我们只考虑 角色B,而不是 用户A,在登入系统这个角度,我们只考虑用户A,而不是角色B,

员工分配用户和组织架构,不是说这个员工没有分配角色,没有访问接口的权限,不是这样的,这个员工,只是工作流中的一个数据信息,而执行工作流接口,得需要有这个 权限的角色 去执行

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-04-09 18:40:00  更:2022-04-09 18:40:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/14 14:54:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码