多租户过程记录二

作出的一些修改

 

     表设计方面。由于原本设计方案是,添加租户同时添加一个租户的一级管理员,这个租户下的一级管理员,对应相应的角色,这个角色对应相应的功能,它拥有当前租户下最大权限,也是基础用户(基础数据)不可删除,如果忘记密码,则运营商可以重置密码。这种设计方案也合理,让这个租户下的一级管理员进行权限管理。看似合理,那不同的租户拥有不同的一级管理员,也就是不同角色,也就是说可能存在,添加一个租户难道也要添加一个角色?这个怎么来维护呢?

 

     需求就是,给租户赋予不同的功能,并且由表tenant和表function的中间表进行维护。这个目前还没有更合理的设计。我认为,运营商采用tenant_id等于0来标识。其他租户则相应给标识。然后利用不同的租户赋予不同的功能,类似于把租户当成一个角色,tenant_id等于0就是运营商角色,tenant_id非等于0就是租户的角色,不同的租户登录的时候拥有它自己的权限。而且在这个当前租户下的一级管理员,它在创建用户并赋予角色的时候,功能需要进行控制,它只能看见他应该看见的一些功能,它没有权限的功能,则屏蔽掉,这样子他创建的角色,这个角色对应的功能也在合理的范围类。所以一开始登录的时候,是根据tenant_id的不同,而拥有不同的功能。这个租户下的一级用户在创建他想创建的用户和相应的角色。并且这个用户和角色严格标识为他所属于的租户是谁。当这个租户下的非一级租户登录时,则根据一级租户和他自身的角色进行条件判定他所拥有的资源。第一个条件根据tenant_id判定拥有的function,第二次则根据他属于角色进行判定拥有的function,两次去交集,并且可以肯定直接取role对于的功能也合理。在不同的租户下这些角色名字可以一样,我们根据tenant_id,和自身的role_id进行标识它自己本身来获取它对应的function。

 

    那么这个租户下的一级管理员他只是用户,不给他任何角色。他的资源也就是function功能,则由tenant-function表进行维护。而这个租户下的二级用户,也就是普通用户的function则由角色来控制,这些不同角色可以在不同租户下可以同名,因为我们有tenant_id进行标识。所以当用户登录的时候,我们都需要进行一次简单的判断,判断你是不是一级管理员(如果是则只是用户,而且没有相对应的的角色;如果不是则为普通用户,则根据tenant_id和role_id进行标识,role_id唯一,则由role_function进行关系维护)。也就是说,当是租户下一级用户,当然也是我们默认创建的用户,去用户表查询,发现这个用户没有角色标识,则为一级标识,则利用tenant-function进行资源维护如果发现这个用户有角色标识,则为普通用户,这些用户可以同名,他们所属于的角色名可以一样,我们根据tenant_id和role_id就可以唯一定位,并且由role_function进行资源定位就可以了。

 

    需求,管理用户全局唯一;不同租户下的用户的用户名也必须唯一。考生端登录添加租户号使用AngularJS的路由,如何屏蔽掉路径中所带的参数?

 

 

 

 

 

 

 

 

你可能感兴趣的:(实践经验总结)