Java,设计,功能权限和数据权限,用户、角色、权限和用户组

这篇具有很好参考价值的文章主要介绍了Java,设计,功能权限和数据权限,用户、角色、权限和用户组。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

权限系统相关概念

ACL(Access Control List),访问控制列表

ACL是一种访问控制机制,包含三个关键要素:用户(User)、资源(Resource)和操作(Operate),当用户请求操作资源时,检查资源的权限列表,如果资源的权限列表中存在该用户的操作权限则允许,否则拒绝。

Java,设计,功能权限和数据权限,用户、角色、权限和用户组

BAC(Role-Based Access Control),基于角色的访问控制

RBAC模型,三个基础组成部分:用户(User)、角色(Role)和权限(Privilege),通过定义角色的权限,授予用户某个角色从而来控制用户的权限,实现了用户和权限的逻辑分离(区别于ACL模型);

RBAC权限授权,实际上是:Who、What、How,构成了访问权限三元组,也就是:Who对What(Which)进行How的操作。

Who:权限的拥用者或主体,如:Principal、User、Group、 Role、Actor等等;

What:权限针对的对象或资源(Resource、Class);

How:具体的权限(Privilege,正向授权与负向授权);

Operator:操作,表明对What的How操作,也就是:权限(Privilege)+ 资源(Resource);

Role:角色,一定数量的权限的集合,权限分配的单位与载体,目的是隔离用户(User)和权限(Privilege)的逻辑关系;

Group:用户组,权限分配的单位与载体,权限不考虑分配给特定的用户而给组,组可以包括组(以实现权限的继承),也可以包含用户,组内用户继承组的权限,User与Group是多对多的关系,Group可以层次化,以满足不同层级权限控制的要求。

RBAC是一种分析模型,主要分为:基本模型RBAC0(Core RBAC)、角色分层模型RBAC1(Hierarchal RBAC)、角色限制模型RBAC2(Constraint RBAC)和统一模型RBAC3(Combines RBAC);

RBAC0,是RBAC0的核心,定义了能构成RBAC控制系统的最小的元素集合,由四部分构成:用户(User)、角色(Role)、会话(Session)、许可(Pemission),RBAC1、RBAC2、RBAC3都是先后在RBAC0的基础上扩展的。

RBAC1,是RBAC角色的分层模型,在角色中引入了继承的概念,有了继承角色就有了上下级或者等级关系。

RBAC2,是RBAC的约束模型,在RBAC0基础上加入约束的概念,主要引入了:静态职责分离SSD(Static Separation of Duty)和动态职责分离DSD(Dynamic Separation of Duty)。

SSD(Static Separation of Duty)是用户和角色的指派阶段加入的,主要是对用户和角色有如下约束:

1、互斥角色:同一个用户在两个互斥角色中只能选择一个;

2、基数约束:一个用户拥有的角色是有限的,一个角色拥有的许可也是有限的;

3、先决条件约束:用户想要获得高级角色,首先必须拥有低级角色;

DSD(Dynamic Separation of Duty)是会话和角色之间的约束,可以动态的约束用户拥有的角色,如:一个用户可以拥有两个角色,但是运行时只能激活一个角色。

RBAC3,是RBAC1与RBAC2合集,既有角色分层又有约束的一种模型。

RBAC(Resource-Based Access Control),基于资源的权限管理

基于资源的权限管理,以资源为中心进行的访问控制,由于基于角色的权限访问控制,角色所对应的权限发生变化,判断逻辑就必须发生改变,可扩展性差,如果是基于资源的权限访问控制,只需要为资源分配相应的权限,直接判断用户是否拥有该权限即可,可扩展性强。

// 基于角色:
if (user.hasRole("Project Manager") || user.hasRole("Department Manager") ) {
    //显示报表按钮
} else {
    //不显示按钮
}

// 基于权限:
if (user.isPermitted("projectReport:view:123456")) {
    //显示报表按钮
} else {
    //不显示按钮
} 

 其它权限模型

Java,设计,功能权限和数据权限,用户、角色、权限和用户组

系统权限(System Authority)=功能权限+数据权限

Java,设计,功能权限和数据权限,用户、角色、权限和用户组

系统权限设计,数据库表设计(仅供参考):

以下设计,包含了几种模型,实际应用中取其一即可~

功能权限表:文章来源地址https://www.toymoban.com/news/detail-428751.html

/** 功能权限 **/
CREATE TABLE `system_permission` (
	`id` BIGINT(11) NOT NULL AUTO_INCREMENT COMMENT '菜单ID' primary key,
	`name` VARCHAR(32) NOT NULL COMMENT '菜单名称',
	`permission` VARCHAR(32) NULL DEFAULT NULL COMMENT '菜单权限标识',
	`path` VARCHAR(128) NULL DEFAULT NULL COMMENT '前端URL',
	`url` VARCHAR(128) NULL DEFAULT NULL COMMENT '请求链接',
	`method` VARCHAR(32) NULL DEFAULT NULL COMMENT '请求方法',
	`parent_id` INT(11) NULL DEFAULT NULL COMMENT '父菜单ID',
	`icon` VARCHAR(32) NULL DEFAULT NULL COMMENT '图标',
	`component` VARCHAR(64) NULL DEFAULT NULL C

到了这里,关于Java,设计,功能权限和数据权限,用户、角色、权限和用户组的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux 用户组的管理-增加一个新的用户组

    在 Linux 系统中,用户组是一种用于管理和分配系统资源权限的方式。本文将介绍如何在 Linux 系统中增加一个新的用户组,包括语法、实操和各种增加新用户组之间的区别。 使用 groupadd 命令可以在 Linux 系统中增加一个新的用户组,其基本语法为: 可以使用的选项有: -g GI

    2024年02月08日
    浏览(49)
  • 用户/用户组管理

    用户管理 * useradd 命令添加用户,会在 /etc/passwd生成 用户信息,信息分为7列,被6个冒号隔开 用户增删改查 rhce 考题:   用户组管理 *  用户组分为 primary group(主要组),private group(私有组),attached group(附加组),由于任何用户都必须依赖于用户组才能存在,所以创建

    2024年02月05日
    浏览(46)
  • 文件、用户、用户组管理

    0.linux的目录结构 1.用户和用户组的信息存储 1.1. 用户的基本信息文件 /etc/passwd 1.1.1. 用户名 1.1.2. 密码 1.1.3. UID 1.1.4. GID 1.1.5. 注释性描述 1.1.6. 宿主目录 1.1.7. 默认shell 1.2. 用户的密码信息文件 /etc/shadow 1.2.1. 用户名 1.2.2. 加密密码 1.2.3. 最后一次修改时间 1.2.4. 最小修改时间间隔

    2023年04月18日
    浏览(40)
  • ubuntu用户与用户组管理

    在Ubuntu中,创建新用户并赋予其类似root的管理权限通常不是直接赋予其root用户身份,而是将其添加到 sudo 组中。这是因为Ubuntu默认禁用root账户直接登录,并鼓励通过sudo来进行管理任务。以下是创建新用户并赋予sudo权限的步骤: 打开终端(快捷键:Ctrl + Alt + T)。 以管理员

    2024年04月26日
    浏览(40)
  • Linux 用户和用户组管理

    Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。 用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮

    2024年02月13日
    浏览(41)
  • Linux中的用户和用户组

    su命令就是用于账户切换的系统命令,其来源英文单词:Switch User 语法: su [-] [用户名] - 符号是可选的,表示是否在切换用户后加载环境变量 (建议带上) 参数:用户名,表示要切换的用户,用户名也可以省略,省略表示切换到root 切换用户后,可以通过exit命令退回上一个用户,

    2024年02月09日
    浏览(42)
  • 将用户添加到docker用户组

    普通用户使用docker命令的时候经常会提示权限不足 这个错误一般使用sudo 命令即可解决 但是每次使用docker命令都需要添加一个sudo,还是很麻烦;所以需要一个一劳永逸的方法:将当前用户加入docker用户组 1.添加docker用户组 2.将当前登录用户加入到docker用户组 3.更新用户组以

    2023年04月10日
    浏览(30)
  • Ubuntu用户与用户组相关操作

    目录 一、root与sudo权限管理 二、root root账户更改密码 三、sudo 设置Sudo权限 四、用户管理操作 创建普通用户 删除用户账户 切换用户 用户组管理 1、root:root是Linux系统中的超级用户或管理员账户。它拥有系统上的最高权限,可以执行任何操作,包括修改系统配置、安装软件等

    2024年02月07日
    浏览(94)
  • Linux之用户和用户组的深入了解

    目录 一、简介 1.1、用户: 1.2、用户组 1.3、UID和GID 1.3、用户账户分类 查看用户类别 超级用户root(0) 程序用户(1~499) 普通用户(500~65535) 二、用户 2.1、添加新的用户账号:useradd 2.2、删除账号:userdel 有-r与没有-r区别 2.3、修改帐号:usermod(mod=modify) 2.4、用户口令的管理:passwd

    2024年02月22日
    浏览(39)
  • 6-Linux操作系统 用户与用户组

    一、介绍说明   Linux系统是一个 多用户 多任务 的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。   用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问

    2024年02月08日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包