热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

概念:用户>角色>权限的管理(RoleBasedAccessControl)

RBAC用户管理规范概念:每个user有多个accounts,每个account有一个accountbinding,有多个roles和多个tasks举个例子:某个用户现在manag

RBAC 用户管理规范

概念:每个user有多个accounts,每个account 有一个account binding,有多个roles和多个tasks

举个例子:某个用户现在manager,这是admin添加了另一个角色supervisor的角色给他,数据结构是这样的(HdLogin)

user{
    accounts : [
        {
            type : "administrator" //可以抽象或具体 : administrator, manager
            password : "1234",
            roles :[
                {
                    type: "manager",
                    roleTaskss : ",manager,supervisor,"
                },
                {
                    type: "supervisor",
                    roleTaskss : ",supervisor,"
                }
            ],
            accountBindings : [
                {
                    type : "email",
                    primaryKey : "xxx@xxx"
                }
                
            ]
        }
    ]
}

*primaryKey是email format, 电话号码,webchat。。。

*灰色是之前的需求,保留而已
自动登入,在employer page 登入后,会有COOKIEs,去到candidate page时,会自动登入。过程是发现有COOKIEs同时type 是customer。如果在candidate 登出时,employer 也会自动登出。因为在登出后,在refresh又会自动登入,死循环很奇怪!

半自动登入,在employer page 登入后,会有COOKIEs,去到candidate page时,点击登入,在这里看当下页面的业务逻辑,
如果是只有一个角色可以登入的话,就直接帮他登入
如果是2个角色,就会有一个选项让他选择哪个角色,
如果是选择的角色在HdLogin有记入的话,会自动登入 (COOKIEs是属于当下界面)
如果是选者的角色是不在HdLogin的话,会需要自己登入

手动登入,意思是每一个页面的业务逻辑都是只有支持自己页面的COOKIEs。
当登入candidate page时,再去到employer page,会查找HdLogin,结果会发现没有记入,然后要求登入

account Type 会记入抽象或具体 user administrator,staff,manager...
举个例子:当manager登入admin page,之后再去到前台page,
如果前台page是“自动登入”或“半自动登入”,首先会去HdLogin去查找看看COOKIEs有没有当下的页面
如果有记入,就broadcast
如果没有记入,就看记入中的account type是不是如何业务逻辑。现在account type是administrator,是可以登入的,在购买房间时,会确定角色是不是manager(因为业务只支持administrator 的 manager可以购买),然后完成!
但是如果是staff 呢?
举个例子:当staff登入admin page,之后在去前台page,
如果前台page是“自动登入”或“半自动登入”,首先回去HdLogin去查找看看COOKIEs有没有当下的页面,
这时发现他的account type是administrator,是可以登入的,但是在购买房间时,资源会发现他不能访问,因为角色只有manager才可以购买

seek的概念,同个email,不同password
在结构上,user 是accounts的父层,但是在创建candidate email后再创建 employer email,是没有把这2个email在同个accounts!
完全是2个email。

roles的数据结构
举个例子:manager要操作supervisor的操作,这时必须roles.roleTaskss 添加一个supervisor。所有的manager就一定要有角色,不然会有bug!

roles :[
            {
                type: "manager",
                roleTaskss : ",manager,supervisor,"
            },
            {
                type: "supervisor",
                roleTaskss : ",supervisor,"
            }
        ],

 

角色>权限 的管理(Role-Based Access Control),mamicode.com" target="_blank">概念 : 用户>角色>权限 的管理(Role-Based Access Control)


推荐阅读
  • 本文详细对比了HashMap和HashTable在多线程环境下的安全性、对null值的支持、性能表现以及方法同步等方面的特点,帮助开发者根据具体需求选择合适的数据结构。 ... [详细]
  • selenium通过JS语法操作页面元素
    做过web测试的小伙伴们都知道,web元素现在很多是JS写的,那么既然是JS写的,可以通过JS语言去操作页面,来帮助我们操作一些selenium不能覆盖的功能。问题来了我们能否通过 ... [详细]
  • egg实现登录鉴权(七):权限管理
    权限管理包含三部分:访问页面的权限,操作功能的权限和获取数据权限。页面权限:登录用户所属角色的可访问页面的权限功能权限:登录用户所属角色的可访问页面的操作权限数据权限:登录用户所属 ... [详细]
  • 实现Win10与Linux服务器的SSH无密码登录
    本文介绍了如何在Windows 10环境下使用Git工具,通过配置SSH密钥对,实现与Linux服务器的无密码登录。主要步骤包括生成本地公钥、上传至服务器以及配置服务器端的信任关系。 ... [详细]
  • Gradle 是 Android Studio 中默认的构建工具,了解其基本配置对于开发效率的提升至关重要。本文将详细介绍如何在 Gradle 中定义和使用共享变量,以确保项目的一致性和可维护性。 ... [详细]
  • 本文由chszs撰写,详细介绍了Apache Mina框架的核心开发流程及自定义协议处理方法。文章涵盖从创建IoService实例到协议编解码的具体步骤,适合希望深入了解Mina框架应用的开发者。 ... [详细]
  • 本报告记录了嵌入式软件设计课程中的第二次实验,主要探讨了使用KEIL V5开发环境和ST固件库进行GPIO控制及按键响应编程的方法。通过实际操作,加深了对嵌入式系统硬件接口编程的理解。 ... [详细]
  • 神策数据分析基础
    本文介绍了基于用户行为的数据分析方法,包括业务问题的提出与定义、具体行为的识别及统计分析流程。同时,详细阐述了如何利用事件模型(Event Model)来描述用户行为,以及在实际应用中的案例分析。 ... [详细]
  • 本文探讨了一种常见的C++面试题目——实现自己的String类。通过此过程,不仅能够检验开发者对C++基础知识的掌握程度,还能加深对其高级特性的理解。文章详细介绍了如何实现基本的功能,如构造函数、析构函数、拷贝构造函数及赋值运算符重载等。 ... [详细]
  • 3DSMAX制作超现实的体育馆模型
    这篇教程是向脚本之家的朋友介绍3DSMAX制作超现实的体育馆模型方法,教程制作出来的体育馆模型非常地不错,不过教程有点难度,需要有一定基础的朋友学习,推荐到脚本之家,喜欢的朋友可 ... [详细]
  • 本文介绍了如何在AngularJS应用中使用ng-repeat指令创建可单独点击选中的列表项,并详细描述了实现这一功能的具体步骤和代码示例。 ... [详细]
  • 在项目冲刺的最后一天,团队专注于软件用户界面的细节优化,包括调整控件布局和字体设置,以确保界面的简洁性和用户友好性。 ... [详细]
  • JavaScript 页面卸载事件详解 (onunload)
    当用户从页面离开时(如关闭页面或刷新页面),会触发 onunload 事件,此时可以执行预设的脚本。需要注意的是,不同的浏览器对 onunload 事件的支持程度可能有所不同。 ... [详细]
  • 默认情况下,Git 使用 Nano 编辑器进行提交信息的编辑,但如果您更喜欢使用 Vim,可以通过简单的配置更改来实现这一变化。本文将指导您如何通过修改全局配置文件来设置 Vim 作为默认的 Git 提交编辑器。 ... [详细]
  • 探索Java 11中的ZGC垃圾收集器
    Java 11引入了一种新的垃圾收集器——ZGC,由Oracle公司研发,旨在支持TB级别的内存容量,并保证极低的暂停时间。本文将探讨ZGC的开发背景、技术特点及其潜在的应用前景。 ... [详细]
author-avatar
想要铭记的总是轻易忘却-
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有