关于MIDAS中如何防止一个用户名/口令多次上线
请问各位大虾在MIDAS中如何防止一个用户多次登陆系统啊?
DELPHI有没有相关的函数提供呢?
我知道可以将登陆的用户名写在一个数据表里面,可是会影响效率啊~~~~~
怎么办怎么办???小弟着急的快抓狂了
100分不多,但是却是我能给出的最高分了,希望大家一定帮帮忙~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//取得客户端信息(网卡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;