社区
网络通信/分布式开发
帖子详情
关于MIDAS中如何防止一个用户名/口令多次上线
mingyeh
2002-03-13 04:19:28
请问各位大虾在MIDAS中如何防止一个用户多次登陆系统啊?
DELPHI有没有相关的函数提供呢?
我知道可以将登陆的用户名写在一个数据表里面,可是会影响效率啊~~~~~
怎么办怎么办???小弟着急的快抓狂了
100分不多,但是却是我能给出的最高分了,希望大家一定帮帮忙~
...全文
618
22
打赏
收藏
关于MIDAS中如何防止一个用户名/口令多次上线
请问各位大虾在MIDAS中如何防止一个用户多次登陆系统啊? DELPHI有没有相关的函数提供呢? 我知道可以将登陆的用户名写在一个数据表里面,可是会影响效率啊~~~~~ 怎么办怎么办???小弟着急的快抓狂了 100分不多,但是却是我能给出的最高分了,希望大家一定帮帮忙~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yangyugw
2002-03-15
打赏
举报
回复
我是这样做的
用户是否上线(true/false)
如果该用户非法退出。而为把改用户退出的信息返回服务器。可以如下解决
你一定有一个管理级用户
用该用户可以察看那些用户在线上,如果非法退出而不可以连接服务器的可以有管理员进行设置更改她的上线为false
还可以在服务器定时对客户端进行监测看他是否在线如果三次检查都没在线就可见自动将她的上线为false;
ChipHead
2002-03-15
打赏
举报
回复
可以让客户定期向服务器发送消息说“我还活着!”……然后如果连续几个周期没有收到,则自动从列表中删除客户连接。
mingyeh
2002-03-15
打赏
举报
回复
那么blackfiles(从来是我伤心) 的公司是用什么办法解决或补救这个问题的呢?
blackfiles
2002-03-15
打赏
举报
回复
是个问题。我公司的系统就存在这个问题。
mingyeh
2002-03-15
打赏
举报
回复
这个方案的确很好,但是还是没有解决用户非正常退出的问题
mingyeh
2002-03-15
打赏
举报
回复
真心感谢大家的参与,经过仔细的思考,决定使用 YANGYUGW(yangyu)的方案,用API函数将机器的硬盘序列号取出来,写到用户信息数据库中,登陆的时候检验数据库中的值和客户电脑硬盘序列号的值是否一致,一致则接受登陆请求,不一致拒绝用户登陆。
这也许可以在技术上保证一个用户名同时只能有一人使用。
如果大家也同意我的观点,我就分分数了!
yangyugw
2002-03-15
打赏
举报
回复
看看这个,会对你有启发
http://www.csdn.net/expert/topic/560/560755.xml?temp=.4501764
rqcong
2002-03-15
打赏
举报
回复
我也十分想了解这个问题,谢谢!
mingyeh
2002-03-15
打赏
举报
回复
呵呵
好啊~~~~
不过学校的电脑连不上
只好回家再问,不知道各位大虾还有什么高招?
yangyugw
2002-03-15
打赏
举报
回复
对不起了,这个我也不太知道,不过可以去问问李维
http://forum.vclxx.org
希望李维给你方法到时别忘了告诉我这个菜鸟
:)
mingyeh
2002-03-15
打赏
举报
回复
QQ采用的可能是一种超时机制
就是如果客户一段时间内没有向服务器发送信息就设置为离线
但是不知道在delphi中有没有相关的函数可以调用
yangyugw
2002-03-15
打赏
举报
回复
可以参考一下qq的做法呀,不过我不太了解qq
不过一定是服务器进行了检查
mingyeh
2002-03-15
打赏
举报
回复
to:YANGYUGW(yangyu)
你的方法有一定的道理
但是,第一种方法需要人工干预,如果系统的规模比较大就很难实现了
第二种方法的检测间隔很难掌握,容易造成在线用户被踢下线,而且当在线用户比较多的时候系统开销较大
mingyeh
2002-03-14
打赏
举报
回复
这个的确是一个很重要的问题,不然如果用户的电脑出现电源或网络故障,他的用户名就永远挂在系统上,也就不能在登陆了。
不知道能不能用delphi实现类似于ASP的超时机制
rmy
2002-03-14
打赏
举报
回复
如果你是三层系统的话
在服务器上定义一个过程 客户端传递密码和用户名
该过程先判断合法性如果合法将此用户名存档
存档时检查档案中是否有该用户存在 如果存在向客户端返回真
否则返回假 客户端通过调用服务端的过程 根据返回的真假 决定是否让起上线
简单 实用 呵呵
qiubolecn
2002-03-13
打赏
举报
回复
想问,如果某一个客户掉线了,非正常退出,他要再进入你有没有处理?
mingyeh
2002-03-13
打赏
举报
回复
多谢quark(夸克)
大恩大德,来日再抱~~!
quark
2002-03-13
打赏
举报
回复
将网卡MacID、计算机名称、IP地址、登陆账号、真实姓名、线程ID保存在数组或列表中,新用户登陆时判断该用户在数组或列表是否存在
quark
2002-03-13
打赏
举报
回复
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//取得客户端信息(网卡MacID、计算机名称、IP地址、登陆账号、真实姓名、线程ID、)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
procedure TCORBAServer_WeiHai.GetClientInfo(const vNetCardID, vComputer, vClientIP, vUser, vName, vThreadID, vStatus: WideString);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function ClientOnline: integer;
var i: integer;
begin
Result := -1;
for i:=1 to Clients.Count do
if vClientIP=TClient(Clients.Items[i-1]).ClientIP
then begin
Result := i-1;
Break;
end;
end;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
var ClientID: integer;
ClientNew: Boolean;
begin
ClientNew := ClientOnline<0;//如果ClientOnline<0则认为该客户端为新增用户
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
if ClientNew then
begin
Clients.Add(Pointer(TClient.Create));
ClientID := Clients.Count-1;
end else ClientID := ClientOnline;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TClient(Clients.Items[ClientID]).NetCardID := vNetCardID;
TClient(Clients.Items[ClientID]).Computer := vComputer;
TClient(Clients.Items[ClientID]).ClientIP := vClientIP;
TClient(Clients.Items[ClientID]).User := vUser;
TClient(Clients.Items[ClientID]).Name := vName;
TClient(Clients.Items[ClientID]).ThreadID := vThreadID;
TClient(Clients.Items[ClientID]).LastTime := Now;
TClient(Clients.Items[ClientID]).Status := vStatus;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//如果是新增客户端则重画StringGrid表面,否则只刷新StringGrid(LastTime,Status)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
if ClientNew then Form_Server.StringGridRepaint else Form_Server.StringGridRefresh(ClientID+1)
end;
mingyeh
2002-03-13
打赏
举报
回复
to windindance(风舞轻扬)
你的方法也是一种解决方案,但是如果用户的IP是动态分配的就不能用了。
另外,建立一个用户表也会造成系统开销。
加载更多回复(2)
区块链高级开发教程(三)
本章从介绍以太坊的开发工具开始,如 Remix IDE。然后我们讨论了一些框架,比如 ...Oraclize 是一项旨在使智能合约能够从其他区块链和全球网络
中
获取数据的服务。该服务目前在比特币和以太坊的测试网和主网上已经
上线
。
软件设计师复习资料
在开发
一个
软件产品的过程
中
,每
一个
程序员都需要跟成千上万行的代码打交道,他们自己写的代码就像大宝SOD蜜一样的天天见,看多了难免叫人头昏眼花胸闷心烦……再加上每天都看见的东西,很容易就会产生思维定式。一...
基于MATLAB平台的SVM分类器在声音信号二分类
中
的应用研究
内容概要:本文介绍了利用MATLAB平台和SVM(支持向量机)分类器进行声音信号二分类的方法。首先简述了MATLAB作为一种高级编程语言及其在信号处理方面的优势,接着详细讲解了声音信号预处理的各个步骤,如采集、增强、滤波和特征提取。随后重点阐述了SVM分类器的工作原理以及它在解决二分类问题上的有效性。文
中
还具体演示了如何在MATLAB环境
中
使用相关工具箱完成整个流程,包括特征提取、模型训练和预测。最后指出该方法在多个领域的广泛应用前景。 适用人群:对信号处理、模式识别感兴趣的科研人员和技术开发者,尤其是那些希望深入了解和支持向量机应用于声音信号分类的人群。 使用场景及目标:适用于需要对声音信号进行精确分类的场合,比如语音识别系统、音频监控设备、智能助手等人机交互产品。目的是提高声音信号分类的准确性,推动相关技术的发展。 其他说明:随着技术进步和更多高质量数据集的出现,基于SVM的声音信号处理有望变得更加精准和高效。
HPStorageWorks存储产品介绍.pdf
HPStorageWorks存储产品介绍.pdf
HyperMesh_10.0_初级培训day1.pdf
HyperMesh_10.0_初级培训day1.pdf
网络通信/分布式开发
1,593
社区成员
32,958
社区内容
发帖
与我相关
我的任务
网络通信/分布式开发
Delphi 网络通信/分布式开发
复制链接
扫一扫
分享
社区描述
Delphi 网络通信/分布式开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章