用户登录踢人机制及排查方法

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

用户登录踢人机制及排查方法

【问题描述】

用户登录时,提示当前用户已登录


【场景介绍】

  • 业务场景及原因分析:

    用户在登录时,提示 改账号已登录在线,确认让对方下线,继续登录?



【解决方案】

出现这样的提示是由于系统判断当前用户在不同的客户端IP上登录,或者在同一个客户端IP上登录了2个相同的客户端类型的界面


【踢人逻辑】

1.同一个用户在不同的客户端IP上不允许同时登录

2.同一个用户在相同的客户端IP上相同客户端类型不允许同时登录

3.不同的用户登录不会进行踢人

4.不同的管理中心下的数据中心登录,不回进行相互踢人

5.同一用户在相同的mac地址下不允许同时登录


名词解释:

1.同一个用户

a.注册用户(有云通行证ID),同一管理中心下,云通行证ID相同即认为是同一个用户

b.非注册用户,同一数据中心,userid相同即为同一用户


2.客户端类型

H5端 SL端 客户端(WPF) 移动端(移动端不踢人)


3.客户端IP

客户端的IP地址


一. 场景介绍

场景一:

同一电脑,同时登录H5端和客户端时提示踢人


场景二:

不同电脑,同时登录H5端和客户端时不进行踢人

二. 排除及解决步骤

场景一说明:

同一电脑,同时登录H5端和客户端时提示踢人,可能原因为H5端和客户端获取到的客户端IP地址不一致导致


解决方法:

  1. 在电脑上登录H5端,然后使用管理员(Administrator)产品,打开【在线用户列表】,查看登录的用户的IP地址是否为一个GuId字段,如果是,说明浏览器权限较低,无法正常获取到准确的IP地址

    解决方法:

    在登录的电脑上开启本地服务使客户端能正常获取到ip地址

    任意打开一个单据列表,点击选项-》打印,在弹框中点击下载安装,随操作系统启用 操作后,关闭浏览器,清理浏览器缓存,再次登录即可获取到正确的IP地址



  2. 在电脑上登录客户端 ,,然后使用管理员(Administrator)产品,打开【在线用户列表】,查看登录的用户的IP地址是否为一个f0:XX 这样的IPV6,如果是,说明电脑启用了IPv6导致无法正确获取到IPv4地址,无法正常获取到准确的IP地址

    解决方法:修改禁用IPv6

    电脑右下角,点击网络-》打开网络和共享-》更改适配器设置-》右键本地连接 点击属性-》取消勾选IPv6 进行保存 




场景二说明:

不同电脑,同时登录H5端和客户端时不进行踢人,可能原因为H5端和客户端获取到的客户端IP地址一致导致

解决方法:

1.修改website\app_data\commonc.config 配置业务站点参数,添加参数 <add key="IsStartWriteDebugLog" value="true" /> 记录获取到的IP地址配置

2. 使用正常的账号登录产品

3. 查询数据中心日志,通过 关键字 ClientIP 搜索记录的IP地址

从示例IP可以看出,最后获取的ip为 10.127.204.18  但是10.X.X.X 和100.X.X.X 都是内网代理IP所以需要添加到白名单中


4. 管理中心执行一下以下语句,将内网代理IP添加到白名单中

---修改IP地址段为白名单 修改@ipInfo 后面的值为 真实的IP地址段

declare @fid nvarchar(36),@fpkid nvarchar(36),@ipInfo nvarchar(100);

set @fid=NEWID();

set @fpkid=NEWID();

set @ipInfo='10.0.0.0~10.255.255.255';

delete T_BAS_CLIENTIPADDRSETTING where fid=@fid;

delete T_BAS_CLIENTIPADDRSETTING_L where fid=@fid;

delete T_BAS_CLIENTIPADDRSETTING_L where FPKID=@fpkid;

 delete T_BAS_CLIENTIPADDRSETTING_L where FId in (select FId from T_BAS_CLIENTIPADDRSETTING where FIPADDERESS=@ipInfo);

 delete T_BAS_CLIENTIPADDRSETTING where FIPADDERESS=@ipInfo;

insert into T_BAS_CLIENTIPADDRSETTING(fid,FIPADDERESS,FADDRESSTYPE,FCREATEDATE,FCREATORID,FMODIFYDATE,FMODIFIERID,FFORBIDTIME,FFORBIDDERID,FFORBIDSTATUS) values(@fid,@ipInfo,2 ,'2024-04-10 09:07:42.537', 16394, '2024-04-10 09:08:09.060' ,16394, NULL ,0 ,'A');

insert into T_BAS_CLIENTIPADDRSETTING_L(FPKID,FID,FLOCALEID,FDESCRIPTION) values(@fpkid, @fid ,2052 ,'公有云白名单');

 

--- 修改单个IP地址为白名单 修改@ipInfo 后面的值为 真实的IP地址

declare @fid nvarchar(36),@fpkid nvarchar(36),@ipInfo nvarchar(100);

set @fid=NEWID();

 set @fpkid=NEWID();

 set @ipInfo='10.2.3.1';

delete T_BAS_CLIENTIPADDRSETTING where fid=@fid;

delete T_BAS_CLIENTIPADDRSETTING_L where fid=@fid;

delete T_BAS_CLIENTIPADDRSETTING_L where FPKID=@fpkid;

delete T_BAS_CLIENTIPADDRSETTING_L where FId in (select FId from T_BAS_CLIENTIPADDRSETTING where FIPADDERESS=@ipInfo);

delete T_BAS_CLIENTIPADDRSETTING where FIPADDERESS=@ipInfo;

insert into T_BAS_CLIENTIPADDRSETTING(fid,FIPADDERESS,FADDRESSTYPE,FCREATEDATE,FCREATORID,FMODIFYDATE,FMODIFIERID,FFORBIDTIME,FFORBIDDERID,FFORBIDSTATUS) values(@fid,@ipInfo,1 ,'2024-04-10 09:07:42.537', 16394, '2024-04-10 09:08:09.060' ,16394, NULL ,0 ,'A');

insert into T_BAS_CLIENTIPADDRSETTING_L(FPKID,FID,FLOCALEID,FDESCRIPTION) values(@fpkid, @fid ,2052 ,'公有云白名单');


用户登录踢人机制及排查方法

【问题描述】用户登录时,提示当前用户已登录【场景介绍】业务场景及原因分析:用户在登录时,提示 改账号已登录在线,确认让对方下线,继...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息