多重系统用户身份的设置方法及装置
文献发布时间:2023-06-19 09:46:20
技术领域
本申请涉及用户身份设置技术领域,具体而言,涉及一种多重系统用户身份的设置方法及装置。
背景技术
目前,一个较为完善的业务系统,通常会提供至少2种不同身份类别,身份类别如管理员和非管理员,给用户使用,如果业务场景较多,甚至会存在10种以上的不同身份类别。由于业务场景的增多,用户身份认证的复杂度也在提高,现有的解决方案是根据不同身份类别分开认证,在一种业务场景下只针对一种身份类别进行认证。
现有的解决方案的缺点是没有统一的用户身份认证方式,分散的身份认证方式使得系统需要维护多处系统入口和存储多种身份类别信息,一个需求改动就会引起多处的调整,使得后期系统维护的难度和成本上升,如果根据业务的需要,系统扩展加入一个全新类别的身份体系,系统开发和维护的成本将成倍的增加。
针对相关技术中没有统一的用户身份认证方式使得后期系统维护的难度和成本上升的问题,目前尚未提出有效的解决方案。
发明内容
本申请的主要目的在于提供一种多重系统用户身份的设置方法及装置,以解决相关技术中没有统一的用户身份认证方式使得后期系统维护的难度和成本上升的问题。
为了实现上述目的,根据本申请的一个方面,提供了一种多重系统用户身份的设置方法。
根据本申请的多重系统用户身份的设置方法包括:将系统用户的身份类别信息存储为一个整型数字;通过二进制位运算来把该整型数字解析得出系统用户的不同身份类别,以及授予或取消指定类别的身份类别给系统用户。
进一步地,所述将系统用户的身份类别信息存储为一个整型数字,包括:对所述系统用户的身份类别进行数字编码;把每个系统用户的身份类别的数字编码均存储为一个整型数字。
进一步地,对所述系统用户的身份类别进行数字编码,包括:
整理出系统用户所有的不同身份类别;如果不同身份类别的数量总共有n个,就把第n种身份类别的数字编码设为2
进一步地,所述通过二进制位运算来把该整型数字解析系统用户的不同身份类别信息,以及授予或取消指定类别的身份信息给系统用户,包括:
解析得到系统用户拥有的身份类别;所述解析得到系统用户拥有的身份类别,包括:把身份类别的数字编码转换成二进制编码,从该二进制编码里面提取出值为1的位数,每个位数都代表一种类别的身份,这些值为1的位数对应的身份类别组合而成就是系统用户所拥有的身份类别;授予系统用户某个指定的身份类别或者取消系统用户某个指定的身份类别;校验系统用户是否拥有指定的身份类别。
进一步地,所述校验系统用户是否拥有指定的身份类别,包括:
获取系统用户的身份编码;校验该系统用户的身份编码,若校验不通过,拒绝访问;校验该系统用户的身份编码,若校验通过,就通过解析身份编码获取身份类别;根据获取的身份类别进入对应的系统用户。
进一步地,所述授予系统用户某个指定的身份类别的计算公式如公式(1)所示:
NewCode=CurrentCode|GrantedCode (1)
其中,CurrentCode表示系统用户当前所拥有的身份类别的数字编码,GrantedCode表示授予的身份数字编码,|表示“或”运算符,NewCode表示系统用户新的身份类别的数字编码;
所述取消系统用户某个指定的身份类别的计算公式如公式(2)所示:
NewCode=CurrentCode^RevokedCode (2)
其中,CurrentCode表示系统用户当前所拥有的身份类别的数字编码,RevokedCode表示指定的取消授予的身份数字编码,^表示“异或”运算符,NewCode表示用户新的身份类别的数字编码;
所述校验系统用户是否拥有指定的身份类别的计算公式如公式(3)所示:
IsPass=(CurrentCode&ComparedCode)==ComparedCode (3)
其中,CurrentCode表示系统用户当前所拥有的身份类别的数字编码,ComparedCode表示需要校验的指定的身份数字编码,&表示“与”运算符,==表示比较运算符,IsPass表示校验结果,值为True则是通过,值为False则是不通过。
第二方面,本申请还提供了一种多重系统用户身份的设置装置,该装置包括:
存储模块,用于将系统用户的身份类别信息存储为一个整型数字;
解析模块,用于通过二进制位运算来解析得出系统用户的不同身份类别,以及授予或取消指定类别的身份类别给系统用户。
进一步地,所述存储模块还用于对所述系统用户的身份类别进行数字编码;把每个系统用户的身份类别的数字编码均存储为一个整型数字;整理出系统用户所有的不同身份类别,如果不同身份类别的数量总共有n个,就把第n种身份类别的数字编码设为2
进一步地,所述解析模块还用于解析得到系统用户拥有的身份类别;授予系统用户某个指定的身份类别或者取消系统用户某个指定的身份类别;校验系统用户是否拥有指定的身份类别。
在本申请实施例中,将系统用户的身份类别信息存储为一个整型数字;通过二进制位运算来解析得出系统用户的不同身份类别,以及授予或取消指定类别的身份类别给系统用户,提供一个统一的身份认证方式,简化系统用户身份认证的流程,极大的降低系统开发和维护成本,进而解决了相关技术中的没有统一的用户身份认证方式使得后期系统维护的难度和成本上升的问题。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,使得本申请的其它特征、目的和优点变得更明显。本申请的示意性实施例附图及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请的多重系统用户身份的设置方法的整体流程图;
图2是根据本申请的所述将系统用户的身份类别信息存储为一个整型数字的流程图;
图3是根据本申请的对所述系统用户的身份类别进行数字编码的流程图;
图4是根据本申请的所述通过二进制位运算来解析系统用户的不同身份类别信息,以及授予或取消指定类别的身份信息给系统用户的流程图;
图5是根据本申请的所述校验系统用户是否拥有指定的身份类别进入系统的流程图;
图6是根据本申请的多重系统用户身份的设置装置的结构图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本申请中,术语“上”、“下”、“左”、“右”、“前”、“后”、“顶”、“底”、“内”、“外”、“中”、“竖直”、“水平”、“横向”、“纵向”等指示的方位或位置关系为基于附图所示的方位或位置关系。这些术语主要是为了更好地描述本申请及其实施例,并非用于限定所指示的装置、元件或组成部分必须具有特定方位,或以特定方位进行构造和操作。
并且,上述部分术语除了可以用于表示方位或位置关系以外,还可能用于表示其他含义,例如术语“上”在某些情况下也可能用于表示某种依附关系或连接关系。对于本领域普通技术人员而言,可以根据具体情况理解这些术语在本申请中的具体含义。
此外,术语“安装”、“设置”、“设有”、“连接”、“相连”、“套接”应做广义理解。例如,可以是固定连接,可拆卸连接,或整体式构造;可以是机械连接,或电连接;可以是直接相连,或者是通过中间媒介间接相连,又或者是两个装置、元件或组成部分之间内部的连通。对于本领域普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。
在本申请中,部分术语含义如下:
二进制:二进制(binary)在数学中指以2为基数的记数系统,以2为基数代表系统是二进位制的。这一系统中,通常用两个不同的符号0(代表零)和1(代表一)来表示,现代的计算机和依赖计算机的设备里都用到二进制。
位运算:程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。位运算一般包含“与(and)”,“或(or)”,“异或(xor)”,“取反(not)”,“左移(shl)”和“右移(shr)”等操作。
分散的身份认证方式使得系统需要维护多处系统入口和存储多种身份类别信息,一个需求改动就会引起多处的调整,使得后期系统维护的难度和成本上升,如果根据业务的需要,系统扩展加入一个全新类别的身份体系,系统开发和维护的成本将成倍的增加。本申请的目的就是为了提供一个统一的身份认证方式,简化系统用户身份认证的流程,极大的降低系统开发和维护成本。
本申请中多重系统用户身份的设置方法,将同一个用户的多重系统用户身份信息存储在同一个整型数据上,通过二进制的位运算来赋予和解析系统用户的身份信息,从而极大的简化了系统用户身份信息的绑定和获取流程,为系统的授权提供新的设置思路。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
本申请的多重系统用户身份的设置方法,如图1所示,包括:
步骤S101,将系统用户的身份类别信息存储为一个整型数字;
具体地,所述步骤S101为:将系统用户的身份类别信息存储为一个64位整型数字,优选地,如图2所示,所述将系统用户的身份类别信息存储为一个整型数字,包括:
步骤S201,对所述系统用户的身份类别进行数字编码;
优选地,如图3所示,对所述系统用户的身份类别进行数字编码,包括:
步骤S301,整理出系统用户所有的不同身份类别;
具体地,假设系统用户一共有5种不同身份类别,分别为A,B,C,D和E,这样所述整理出系统用户所有的不同身份类别的结果就是身份类别A,B,C,D和E。
步骤S302,如果不同身份类别的数量总共有n个,就把第n种身份类别的数字编码设为2
具体地,假设如上所述整理出系统用户所有的不同身份类别的结果就是身份类别A,B,C,D和E,那它们的数字编码就依次为1(20)、2(2
表1
步骤S202,把每个系统用户的身份类别的数字编码均存储为一个整型数字。
具体地,每个系统用户的身份类别的数字编码存储为一个整型数字,通常选择64位长整型的正整数存储,这个整型数字代表每个系统用户当前拥有的身份类别的数字编码。
用户当前的身份类别的数字编码是基于业务规则通过二进制的“或”和“异或”运算赋值的。
步骤S102,通过二进制位运算来把该整型数字解析得出系统用户的不同身份类别,以及授予或取消指定类别的身份类别给系统用户。
具体地,所述步骤S102为:通过计算机的二进制位运算来把该整型数字解析得出系统用户的不同身份类别,以及授予或取消指定类别的身份类别给系统用户,从而简化了系统用户的身份认证流程,该方法也可以作为用户系统权限管理的设置方法,把用户系统权限分解为若干个独立的操作单元,第n个操作单元设置一个数字编码为2
步骤401,解析得到系统用户拥有的身份类别;
优选地,所述解析得到系统用户拥有的身份类别,包括:把身份类别的数字编码转换成二进制编码,从该二进制编码里面提取出值为1的位数,每个位数都代表一种类别的身份,这些值为1的位数对应的身份类别组合而成就是系统用户所拥有的身份类别。这些值为1的位数对应的身份类别组合而成就是系统用户所拥有的身份类别的组合而成的方法即为把该系统用户的所有的身份类别的数字编码相加得到的和值,该和值就是系统用户所拥有的身份类别。以8位二进制编码为例,每种身份类别对应的二进制编码如表2所示:
表2
假设有三个系统用户,分别是张三,李四,王五,他们所拥有的身份类别的数字编码分别是1,11,31,那么张三拥有身份类别A,李四拥有身份类别A,B和D,王五拥有所有的身份类别(A,B,C,D和E),具体如表3所示:
表3
步骤402,授予系统用户某个指定的身份类别;
具体地,所述授予系统用户某个指定的身份类别的方法是采用二进制位运算的“或”(or)运算(即在相同位上的数字,只要有至少一个数字为1,在这个位上的运算结果为1,否则为0),把系统用户当前所拥有的身份类别的数字编码和授予的身份的数字编码进行“或”(or)运算,得到用户新的身份数字编码,优选地,所述授予系统用户某个指定的身份类别的计算公式如公式(1)所示:
NewCode=CurrentCode|GrantedCode (1)
其中,CurrentCode表示系统用户当前所拥有的身份类别的数字编码,GrantedCode表示授予的身份数字编码,|表示“或”(or)运算符,NewCode表示系统用户新的身份类别的数字编码。
假设需要给上述的系统用户“张三”授予的身份数字编码B,该数字编码B为2,那么授予成功之后,系统用户“张三”新的身份类别的二进制编码为00000011,数字编码值为3,即同时拥有身份类别A和B。
00000001
or 00000010
------------------
00000011
步骤403,取消系统用户某个指定的身份类别;
具体地,所述取消系统用户某个指定的身份类别的方法是采用二进制位运算的“异或”(xor)运算(即在相同位上的数字,不同则运算结果为1,相同则为0),把系统用户当前所拥有的身份类别的数字编码和指定的取消授予的身份数字编码进行“异或”(xor)运算,得到用户新的身份类别的数字编码,优选地,所述取消系统用户某个指定的身份类别的计算公式如公式(2)所示:
NewCode=CurrentCode^RevokedCode (2)
其中,CurrentCode表示系统用户当前所拥有的身份类别的数字编码,RevokedCode表示指定的取消授予的身份数字编码,^表示“异或”(xor)运算符,NewCode表示用户新的身份类别的数字编码。
假设需要给上述系统用户“王五”取消授予的身份数字编码D,该取消授予的身份数字编码D为8,那么取消授予之后,系统用户“王五”新的身份类别的二进制编码为00010111,数字编码值为23,即拥有身份类别A,B,C和E。
00011111
xor00001000
------------------
00010111
步骤404,运用计算公式来校验系统用户是否拥有指定的身份类别;
具体地,所述校验系统用户是否拥有指定的身份类别的方法是采用二进制位运算的“与”(and)运算(即在相同位上的数字,只有全部都为1则运算结果为1,若有一个不为1,则运算结果为0),把系统用户当前所拥有的身份类别的数字编码和指定的身份数字编码进行“与”(and)运算,如果运算结果与指定的身份数字编码相等,则表示校验通过,否则校验不通过,优选地,所述校验系统用户是否拥有指定的身份类别的计算公式如公式(3)所示:
IsPass=(CurrentCode&ComparedCode)==ComparedCode (3)
其中,CurrentCode表示系统用户当前所拥有的身份类别的数字编码,ComparedCode表示需要校验的指定的身份数字编码,&表示“与”(and)运算符,==表示比较运算符,IsPass表示校验结果,值为True则是通过,值为False则是不通过。
假设如果需要校验上述系统用户“李四”是否拥有身份类别B,该身份类别B的数字编码为2,经过运算后,运算结果为2,和身份类别B的数字编码是一样的,那么校验通过;如果需要校验上述系统用户“李四”是否拥有身份类别C,该身份类别C的数字编码为4,经过运算后,运算结果为0,和身份类别C的数字编码是不一样的,那么校验不通过,具体如表4所示:
表4
具体地,通过获取到系统用户的身份编码后,使用统一的流程来进行用户身份认证。优选地,如图5所示,所述校验系统用户是否拥有指定的身份类别,包括:
步骤501,获取系统用户的身份编码;
步骤502,解析身份编码获取身份类别;
步骤503,获取当前系统授权的身份类别;
步骤504,校验用户身份类别是否包含当前系统授权的身份类别,若校验不通过,拒绝访问当前系统;
步骤505,校验用户身份类别是否包含当前系统授权的身份类别,若校验通过,允许进入访问当前系统。
以下用示例来说明校验系统用户是否拥有指定的身份类别的方法:
以上述的系统用户为张三,李四,王五为例,当他们登录后需要进入某一作为当前系统的业务系统时(该业务系统仅允许拥有身份类别为B的成员进入),系统会分别获取他们的身份编码,并解析他们的身份类别,对于张三来说:张三没有身份类别B,系统校验不通过,拒绝张三访问。对于李四和王五来说:他们都拥有身份类别B,系统校验通过,允许访问当前系统。
从以上的描述中,可以看出,本申请实现了如下技术效果:
在本申请实施例中,管理系统用户的身份类别信息简单,即身份类别信息仅存储于一个正整型数字,数据存储空间小,身份的授予、取消和校验等操作也只需要通过计算机的基础运算即可满足,无额外的逻辑运算。统一的身份认证流程,即使用统一的身份认证流程,使得本申请的可扩展性和可维护性得到了提高,在业务逻辑发生调整时,整体改动相对较小,维护成本也相对较低,进而解决了没有统一的用户身份认证方式使得后期系统维护的难度和成本上升的技术问题。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
根据本申请实施例,还提供了一种用于实施上述多重系统用户身份的设置方法的装置,如图6所示,该装置包括:
存储模块10,用于将系统用户的身份类别信息存储为一个整型数字;
解析模块20,用于通过二进制位运算来解析得出系统用户的不同身份类别,以及授予或取消指定类别的身份类别给系统用户。
优选地,所述存储模块10还用于对所述系统用户的身份类别进行数字编码;把每个系统用户的身份类别的数字编码均存储为一个整型数字;整理出系统用户所有的不同身份类别,如果不同身份类别的数量总共有n个,就把第n种身份类别的数字编码设为2
优选地,所述解析模块20还用于解析得到系统用户拥有的身份类别;授予系统用户某个指定的身份类别或者取消系统用户某个指定的身份类别;校验系统用户是否拥有指定的身份类别。
本申请实施例的关键点是采用了计算机的二进制位运算的特点来管理系统用户的身份类别信息,对系统的身份认证流程提供了新的解决方案。使用的是计算机基本的二进制位运算能力,避免了现有其他的实现方案相对较为复杂的问题。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
- 多重系统用户身份的设置方法及装置
- 一种区块链系统用户身份匿名、可追踪方法及相应存储介质与电子装置