Delphi 实现一个用户只能在一个地方登陆。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi 实现一个用户只能在一个地方登陆。相关的知识,希望对你有一定的参考价值。

就像QQ一样,一个用户帐号只能登陆一个,不能同时登陆多个。

参考技术A 可以在数据库中定义一个登录状态标记,当用户在线,则记录登录状态为1,离线为0,程序为判断1时则提示不能重复登录,如果需要强制已经登录的客户端离线,则需要做网络通讯 参考技术B 登陆状态、名称等日志可以用数据库管理,设计增加个是否登陆的字段,当客户机登陆成功后,把这个字段的值改为YES,否则改为NO,当登陆的时候检查该字段,如果NO了可以登陆,否则拒绝登陆。 毕竟你验证用户名密码也得访问数据库,这个可以作为一个条件加入到里面就可以了。追问

如果客户端,服务器非正常关机,不好控制啊。

参考技术C 给你大致提个方向吧
可以使用TIdTCPServer和TIdTCPClient实现
delphi程序登陆时进行tcp连接并把账号一起发送给服务器端,连接成功后服务器端把登陆的账号记下来,然后每隔一个短暂的时间由客户端向服务器端发送一个包来实现长连接

当服务器端收到连接请求的时候,先判断提交过来的账号是否已存在连接,若存在则返回一个错误,客户端根据错误禁止登陆

当服务器端超过时间未收到客户端发来的数据包,则判定客户端已被关闭,将相应账号标为未登录状态即可本回答被提问者采纳
参考技术D 可以,这是个设计问题。
你只要设定一个登陆接口服务器,所有需要统一登陆的程序都使这个接口,在接口中检查即可

web站点,同一个浏览器只能登陆一个用户的原因(cookie不能跨浏览器)

我的web站点,比如  http://ip/testsite/default.aspx,

当我在我的机器上,用chrome打开,用账号user1登陆,
那么当我再新开个tab,再打开这个web站点,这时显示的还是user1登陆着。
我想在chrome里面用另一个账号user2登陆,那么只能是退出user1,再用user2登陆。
也就是在同一个浏览器里,同一时间只能一个账号登陆。

而同一时间,在不同的浏览器里,比如一个是chrome, 一个是firefox,分别用user1和user2登陆,这样是可行的。

这个现象是正确的,原因就是cookie不能跨浏览器,而我们用cookie保存了sessionid,然后服务器判断sessionid是否存在。

 

chrome可以用ctrl+shift+n新建的就不会共享cookie了。

以上是关于Delphi 实现一个用户只能在一个地方登陆。的主要内容,如果未能解决你的问题,请参考以下文章

一个账号只能在一个地方登陆一次

如何用delphi7在后台登录一个网站并打开一个有权限(登陆用户)的网页?

web项目中,限制只能打开登陆页面

在网页设计中如何限制一个用户在多个地方同时登陆

微信小程序登陆注册功能实现

微信小程序登陆注册功能实现