一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于es6实现单点登录和子系统登录自动切换的方法与流程

2022-02-22 23:03:48 来源:中国专利 TAG:


1.本发明涉及前端开发技术领域,尤其涉及一种基于es6实现单点登录和子系统登录自动切换的方法。


背景技术:

2.在为企业开发的业务子系统过程中,随着企业业务系统的逐渐增多,单点登录成为企业业务整合的解决方案之一,所谓单点登录,是指在多个应用系统中,只需要登录一次,就访问其他相互信任的应用系统。然而在有的场景下仍然需要单独启动业务子系统来满足企业的需求,这就意味着我们开发的系统需要同时满足单点登录的启动方式,也要能单独的启动子系统。传统的做法是给子系统设置一个默认的全局flag为false,表示子系统登录,true表示单点登录。确定好flag后,在启动服务的时候,需要手动修改flag的值,然后跳转至不同的登录页面。这样做固然能实现业务需求,但是需要每次启动服务的时候手动修改flag的值,不利于扩展和维护。


技术实现要素:

3.本发明的目的就在于为了解决上述问题而提供一种基于es6实现单点登录和子系统登录自动切换的方法,本发明采用javascript的ecmascript 6版本的proxy代理方法,解决每次启动服务时都需要手动去修改flag的值,以便确定是单点登录还是子系统登录。
4.本发明通过以下技术方案来实现上述目的:
5.一种基于es6实现单点登录和子系统登录自动切换的方法,包括以下步骤:
6.步骤1:在globaldata.js中配置全局默认标识isclient对象,该对象内的flag属性是单点登录和子系统登录的标识,默认是false;(false,表示子系统登录,true表示单点登录)。
7.步骤2:在globaldata.js中实例化proxy,利用es6的proxy特性,重构对象的get方法,以达到拦截和自动处理属性变化的目的:
8.a、代理使用proxy构造函数创建,该构造函数接收两个参数:目标对象,处理程序对象,通过new关键字生成代理实例;
9.b、定义捕获器(trap),捕获器是在处理程序对象中定义的“基本操作的拦截器”,每个处理程序对象包含零个或多个捕获器,每个捕获器都对应一种基本操作,直接或间接在代理对象上调用;每次在代理对象上调用这些基本操作时,代理在这些操作传播到目标对象之前先调用捕获器函数,从而拦截并修改相应的行为;
10.c、设置捕获器参数,所有捕获器都访问相应的参数,基于这些参数重建被捕获方法的原始行为,比如,get()捕获器会接收到目标对象traptarget、要查询的属性property和代理对象receiver三个参数;
11.d、调用捕获器与之对应的反射api;处理程序对象中所有捕获的方法都有对应的反射(refect)api方法。这些方法与捕获器拦截的方法具有相同的名称和函数签名,而且也
具有与被拦截方法相同的行为。
12.进一步方案为,所述步骤1中,在代理isclient过程中,当访问代理对象上的isclient时,判断当前url路径中是否包含token字段,如果包含token字段,就重新定义get方法,并将其返回true。
13.进一步方案为,所述步骤1中,在代理isclient过程中,当访问代理对象上的isclient时,判断当前url路径中是否包含token字段,如果不存在token字段,则在get方法中利用反射api,返回reflect.get(...arguments)方法并映射到isclient对象的flag属性。
14.进一步方案为,所述步骤2中,通过es6中模块导出机制将代理对象导出供main.js引入,在main.js中通过全局路由导航守卫对globaldata.proxy.isclient进行访问拦截当前url;如果当前url存在token字段,代理对象会自动将isclient对象中的flag字段置为true,并自动跳转至单点登录,否则置为false,自动跳转至子系统登录。就实现了单点登录和子系统登录自动切换。
15.进一步方案为,所述步骤2中,当进入单点登录状态,然后点击退出登录时会进入到子系统登录状态,点击退出登录时url上面已经不存在token字段,proxy代理会再次将isclient对象中的flag字段置为false,自动跳转至子系统登录状态,则需要将isclient写入sessionstorage,在点击退出登录时获取sessionstorage里面的isclient标记判断即可。
16.本发明的有益效果在于:
17.本发明的一种基于es6实现单点登录和子系统登录自动切换的方法,利用es6的proxy用于修改某些操作的默认行为的特性达到在javascript语言中对象自动处理属性的目的。
附图说明
18.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要实用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还根据这些附图获得其他的附图。
19.图1为本发明流程图。
具体实施方式
20.为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。
21.在任一实施例中,如图1所示,本发明的一种基于es6实现单点登录和子系统登录自动切换的方法,包括:
22.步骤1:在globaldata.js中配置全局默认标识isclient对象,该对象内的flag属性是单点登录和子系统登录的标识,默认是false。(false,表示子系统登录,true表示单点
登录)。
23.步骤2:在globaldata.js中实例化proxy,利用es6的proxy特性,重构对象的get方法,以达到拦截和自动处理属性变化的目的:
24.代理使用proxy构造函数创建,该构造函数接收两个参数:目标对象,处理程序对象。通过new关键字生成代理实例。
25.定义捕获器(trap),捕获器是在处理程序对象中定义的“基本操作的拦截器”,每个处理程序对象可以包含零个或多个捕获器,每个捕获器都对应一种基本操作,可以直接或间接在代理对象上调用。每次在代理对象上调用这些基本操作时,代理可以在这些操作传播到目标对象之前先调用捕获器函数,从而拦截并修改相应的行为。
26.设置捕获器参数。所有捕获器都可以访问相应的参数,基于这些参数可以重建被捕获方法的原始行为,比如,get()捕获器会接收到目标对象traptarget、要查询的属性property和代理对象receiver三个参数。
27.调用捕获器与之对应的反射api。处理程序对象中所有可以捕获的方法都有对应的反射(refect)api方法。这些方法与捕获器拦截的方法具有相同的名称和函数签名,而且也具有与被拦截方法相同的行为。
28.在代理isclient过程中,当访问代理对象上的isclient时,判断当前url路径中是否包含token字段,如果包含token字段,就可以重新定义get方法,将其返回true。
29.在代理isclient过程中,当访问代理对象上的isclient时,判断当前url路径中是否包含token字段,如果不存在token字段,则在get方法中利用反射api,返回reflect.get(...arguments)方法并映射到isclient对象的flag属性。
30.之后,通过es6中模块导出机制将代理对象导出供main.js引入,在main.js中通过全局路由导航守卫对globaldata.proxy.isclient进行访问拦截当前url。如果当前url存在token字段,代理对象会自动将isclient对象中的flag字段置为true,自动跳转至单点登录,否则置为false,自动跳转至子系统登录。就实现了单点登录和子系统登录自动切换。
31.需要注意的点是当进入单点登录状态,然后点击退出登录时会进入到子系统登录状态,这是因为点击退出登录时url上面已经不存在token字段,proxy代理会再次将isclient对象中的flag字段置为false,自动跳转至子系统登录状态,解决方法就是将isclient写入sessionstorage,在点击退出登录时获取sessionstorage里面的isclient标记判断即可。
32.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,通过任何合适的方式进行组合,为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。此外,本发明的各种不同的实施方式之间也进行任意组合,只要其不违背本发明的思想,其同样应当视为本发明所公开的内容。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献