用户登录踢人机制及排查方法
【问题描述】
用户登录时,提示当前用户已登录
【场景介绍】
业务场景及原因分析:
用户在登录时,提示 改账号已登录在线,确认让对方下线,继续登录?
【解决方案】
出现这样的提示是由于系统判断当前用户在不同的客户端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地址不一致导致
解决方法:
在电脑上登录H5端,然后使用管理员(Administrator)产品,打开【在线用户列表】,查看登录的用户的IP地址是否为一个GuId字段,如果是,说明浏览器权限较低,无法正常获取到准确的IP地址
解决方法:
在登录的电脑上开启本地服务使客户端能正常获取到ip地址
任意打开一个单据列表,点击选项-》打印,在弹框中点击下载安装,随操作系统启用 操作后,关闭浏览器,清理浏览器缓存,再次登录即可获取到正确的IP地址
在电脑上登录客户端 ,,然后使用管理员(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 ,'公有云白名单');
用户登录踢人机制及排查方法
本文2024-09-23 01:25:13发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-145810.html