1. 社区

1.1. 基本介绍

社区是地球号用户的最高组织单位,也是独立的注册单位。社区的概念是隔绝注册的,用户在一个社区里注册后,只能在这个社区登陆,不能在另一个社区登陆。同一个电话号码可以在A社区注册,也可以在B社区注册。

1.2. 超级社区

地球号内建一个特殊的社区:XdUaDuA,任何人都可以注册这个社区的None角色。从地球号官网注册的用户具备初始角色 dua:God。这个网站将来会开放给开发者注册。目前不会开放。

  • 地球号中只有一个超级户群:XdUaXduA。这里面的root和god用户都可以访问其它户群,具体表现在这些人持有的token中的有效负载如下:{ugrp:"XdUaXduA",role:"root"}或者{ugrp:"XdUaXduA",role:"god"}

  • 当各大api接口在看到来着token拥有这样的token后,就要尊重其跨户群访问的权力:比如token的ugrp是XdUaXduA,但要查询的ugrp条件却不是XdUaXduA,这个时候就要尊权执行。

  • 地球号内建一个特殊的户群:XdUaDuA,任何人都可以注册这个户群的none角色。从地球号官网注册的用户具备初始角色 dua:none,地球号的root可以把dua:none用户提拔为dua:god角色。

  • dua:none是注册http://www.xdua.com后默认的角色,dua:none也就唯一这个角色。

  • 只有dua:root才可以提拔dua:god,dua:root的唯一使命就是提拔dua:god。

  • 只有dua:root和dua:god才可以在整个地球号全局搜查。

  • dua:none/dua:root/dua:god都可以创建自己的户群。

  • 户群是隔绝注册的。

1.3. 普通社区

除了XdUaXduA的其它户群都是普通户群。这些户群的注册和登录和所有行为都在本户群进行。

1.4. 应用绑定

一个应用只能绑定到一个社区,一个应用不能绑定到多个社区。这个设计固化在应用表里,在app表里,每个app有个zone_id字段(这个设计还有回旋余地)。通过这种对应关系,可以看到一个社区的应用授权列表。在这里强调App和Zone的多对1关系,是因为这确实是一个要思考的点。要思考这个问题,我们就一个一个讨论,一共有三种情况。我们分别在下面分析。分析的角度有如下几点:

  • APP的登录问题,登录进入哪个Zone。
  • APP生成的令牌,令牌里的sub字段只能填写一个app_id。
  • APP开发的成本,例如在智慧养老环境下,护工APP和家属APP该如何区分,是同一个APK还是多个APK。同一个APK可以进入APP通过APP内选择不同的按钮来选择不同的token。
  • APP要访问算法和数据的时候算哪个社区?

1.4.1. 多应用.v.多社区/单应用.v.多社区

在这种设计下,需要专门的App+Zone的绑定表支持,这种设计会出现多个问题。 问题1:App在设计登录的时候,需要尝试从多个Zone去登录,判断用户和密码。此时,如果多个Zone都有同一个电话号码的时候,就还需要其它机制来决定是按照哪个电话登录。问题2:应用生成的token令牌里的sub(app_id)字段只能填一个,不能满足这个1v多关系。

优点

这种设计好像没有什么优点。

缺点

设计复杂。而且就算是开发多APP,可以在一个APK内通过APP内部机制切换令牌。当然在网页控制台,也可以通过不同入口切换不同的令牌,切换不同的APP_ID。所以在设计上,根本不需要多v多的关系。

1.4.2. 多应用.v.单社区/单应用.v.单社区

在这种设计下,就不需要额外的App+Zone的绑定表支持。每个APP只能登录一个Zone(注意,一个用用可能包含多个APP,只要切换令牌就行。)

1.5. 算法社区

算法访问目前统一放在ALgoALgo社区。在未来,开发者创建的算法,可以归属在开发者门下。

1.6. 数据社区

数据访问目前统一放在DaTaDaTa社区。在未来,开发者创建的数据,可以归属在开发者门下。

[!note] 为什么必须在创建专门的社区供算法和数据用? 因为XdUaXDuA社区权限太高了,为了不污染它,专门造就了算法和数据社区。

1.7. 废弃讨论

  • 户群可以被设置公开或私有,公开的户群可以被公开搜索到。现在的想法是,户群的概念不应该透露给外界,这层应该隐藏起来。在使用者看来,不知道其它的户群的存在。

  • 户群可以被设置公开或私有,公开的户群允许来自其它户群的用户登录。私有的户群不允许来自其它的户群登录。这点现在看来,非常影响户群概念的设计。系统中只能有一个户群拥有跨群访问的权限:XdUaXduA

  • 户群可以设置自己的应用绑定列表,没有绑定的应用是不可以登录注册这个户群的。这部分逻辑现在还没有实现。

    2. 社区

2.1. 基本介绍

社区是地球号用户的最高组织单位,也是独立的注册单位。社区的概念是隔绝注册的,用户在一个社区里注册后,只能在这个社区登陆,不能在另一个社区登陆。同一个电话号码可以在A社区注册,也可以在B社区注册。

2.2. 超级社区

地球号内建一个特殊的社区:XdUaDuA,任何人都可以注册这个社区的None角色。从地球号官网注册的用户具备初始角色 dua:God。这个网站将来会开放给开发者注册。目前不会开放。

2.3. 应用绑定

一个应用只能绑定到一个社区,一个应用不能绑定到多个社区。这个设计固化在应用表里,在app表里,每个app有个zone_id字段(这个设计还有回旋余地)。通过这种对应关系,可以看到一个社区的应用授权列表。在这里强调App和Zone的多对1关系,是因为这确实是一个要思考的点。要思考这个问题,我们就一个一个讨论,一共有三种情况。我们分别在下面分析。分析的角度有如下几点:

  • APP的登录问题,登录进入哪个Zone。
  • APP生成的令牌,令牌里的sub字段只能填写一个app_id。
  • APP开发的成本,例如在智慧养老环境下,护工APP和家属APP该如何区分,是同一个APK还是多个APK。同一个APK可以进入APP通过APP内选择不同的按钮来选择不同的token。
  • APP要访问算法和数据的时候算哪个社区?

2.3.1. 多应用.v.多社区/单应用.v.多社区

在这种设计下,需要专门的App+Zone的绑定表支持,这种设计会出现多个问题。 问题1:App在设计登录的时候,需要尝试从多个Zone去登录,判断用户和密码。此时,如果多个Zone都有同一个电话号码的时候,就还需要其它机制来决定是按照哪个电话登录。问题2:应用生成的token令牌里的sub(app_id)字段只能填一个,不能满足这个1v多关系。

优点

这种设计好像没有什么优点。

缺点

设计复杂。而且就算是开发多APP,可以在一个APK内通过APP内部机制切换令牌。当然在网页控制台,也可以通过不同入口切换不同的令牌,切换不同的APP_ID。所以在设计上,根本不需要多v多的关系。

2.3.2. 多应用.v.单社区/单应用.v.单社区

在这种设计下,就不需要额外的App+Zone的绑定表支持。每个APP只能登录一个Zone(注意,一个用用可能包含多个APP,只要切换令牌就行。)

2.4. 算法社区

算法访问目前统一放在ALgoALgo社区。在未来,开发者创建的算法,可以归属在开发者门下。

2.5. 数据社区

数据访问目前统一放在DaTaDaTa社区。在未来,开发者创建的数据,可以归属在开发者门下。

[!note] 为什么必须在创建专门的社区供算法和数据用? 因为XdUaXDuA社区权限太高了,为了不污染它,专门造就了算法和数据社区。

results matching ""

    No results matching ""