c# winform实现同时只允许账号在一台电脑登录的功能
公司有个小需求,要求账号不能同时登录在多台电脑上,就像那个微信或QQ一样,如果一台电脑登录了,原来登录的就自动退出了(网上搜索点单点登录,发现有些出入,人家是实现一次登录在多个系统间认证的)
找了些资料,最后发现还是通过数据库来验证用户是否是在其它电脑上登录最为有效了,实现也简单,最关键的部分就是用户登录时生成一个不重复的字符串,这里我用的是生成一个guid来作为标志.
第一步: 用户登录,生成一个guid,用账号查询登录列表中是否有登录的信息,如果有登录信息,则用guid更新标志,如果没有,新增一条登录信息,包括用户账号、标志、登录时间信息
第二步: 进入程序后用一个时钟来定期查询登录列表,查看标志信息是不是自己登录时所生成的标志。如果是说明没有在别的电脑上登录,如果不是,说明有人在其他电脑上登录了。
第三步: 检测到其它用户登录后弹出提醒,用户点击提醒后自动结束当前程序。
第四步: 如果是用户主动退出程序时,则清理掉登录缓存的信息
道理想通了代码实现起来就非常简单了,一条查询数据表的函数就解决问题了。

private void T_Check_Tick(object sender, EventArgs e)
{
//检测是否有其它用户登录,0表示已经有其它用户登录了
string sql = "select count(*) from 收据_登录缓存 where session='"+session+"'";
int x=Convert.ToInt32(hr.executeOneSQL(sql,""));
if (x == 0)
{
T_Check.Enabled = false;
MessageBox.Show(tm.info6, "退出提醒", MessageBoxButtons.OK, MessageBoxIcon.Information);
System.Environment.Exit(0);
}
}
c# winform实现同时只允许账号在一台电脑登录的功能的更多相关文章
- ebay如何确定同一电脑登陆了多个账号,以及同一账号登陆过多台电脑
转自hilton 的BLOG http://jimqu.blog.51cto.com/105370/654691 一切要从ebay的买家保护说起 ebay作为一个电子商务平台,之所以可以汇聚如此众多的 ...
- php 实现同一个账号同时只能一个人登录
php 实现同一个账号同时只能一个人登录 张映 发表于 2015-01-22 分类目录: php 标签:mysql, nginx, openfire, php, redis 以前考虑过这个问题,今天实 ...
- Windows下Git多账号配置,同一电脑多个ssh-key的管理
这一篇文章是对上一篇文章<Git-TortoiseGit完整配置流程>的拓展,所以需要对上一篇文章有所了解,当然直接往下看也可以,其中也有一些提到一些基础的操作. <Git-Tort ...
- Winform(C#.NET)自动更新组件的使用及部分功能实现
声明:核心功能的实现是由园子里圣殿骑士大哥写的,本人是基于他核心代码,按照自己需求进行修改的. 而AutoUpdaterService.xml文件生成工具是基于评论#215楼 ptangbao的代 ...
- git同时存在两个账号(在同一台电脑上)——三步完成
目录 1.首先是常规设置 2.同时添加两个账号 3.最后一步,配置~/.ssh/config文件 4.补充:有时因为设置了全局账号,因此需要清除 由于本人有连个git账号,个人github账号和公司g ...
- 【亲测可用,亦可配置同一平台的不同账号,例如阿里云的两个不同账号】Windows下Git多账号配置,同一电脑多个ssh-key的管理
Windows下Git多账号配置,同一电脑多个ssh-key的管理 这一篇文章是对上一篇文章<Git-TortoiseGit完整配置流程>的拓展,所以需要对上一篇文章有所了解,当然直接 ...
- Winform(C#.NET)自动更新组件的使用及部分功能实现(一点改进功能)
接前两篇继续: Winform(C#.NET)自动更新组件的使用及部分功能实现 Winform(C#.NET)自动更新组件的使用及部分功能实现(续) 借鉴文章:http://www.cnblogs.c ...
- Winform(C#.NET)自动更新组件的使用及部分功能实现(续)
接昨天的文章Winform(C#.NET)自动更新组件的使用及部分功能实现 强制更新的实现部分: 将DownloadConfirm窗体修改成单纯的类 public class DownloadConf ...
- 一台电脑,两个及多个git账号配置
1. 生成两[三]个ssh公钥私钥 方法参照:http://www.cnblogs.com/fanbi/p/7772812.html第三步骤 假定其中一个是id_rsa, 另一个时id_rsa_two ...
随机推荐
- wwwroot文件无读取某个文件夹权限(对IIS_USER增加全部权限)
- C#中有关数组和string引用类型或值类型的判断
直接来一段测试代码 class value_ref_type { public static void DEMO1() { ] { }; double[] location_new; string s ...
- TRegEx 正则表达式
TRegEx #include <System.RegularExpressions.hpp> void __fastcall TForm1::Button1Click(TObject * ...
- 转 查看linux文件目录的大小和文件夹包含的文件数
du -sh 文件夹路径 查看linux文件目录的大小和文件夹包含的文件数 统计总数大小 du -sh xmldb/ du -sm * | sort -n //统计当前目录大小 并安大小 排序 du ...
- 网络编程基础之Socket套接字简单应用
一.Socket套接字实现通信循环 所谓通信循环,简单理解就是客户端可以给服务端循环发送信息并获得反馈的过程. 1.基础版 通信循环的程序分为两部分,即两个python模块,分别为客户端.py和服务端 ...
- Kafka总结的一张图
- Android开发实战之简单音乐播放器
最近开始学习音频相关.所以,很想自己做一个音乐播放器,于是,花了一天学习,将播放器的基本功能实现了出来.我觉得学习知识点还是蛮多的,所以写篇博客总结一下关于一个音乐播放器实现的逻辑.希望这篇博文对你的 ...
- Openssl enc命令
一.简介 enc - 对称加密例程,使用对称密钥对数据进行加解密,特点是速度快,能对大量数据进行处理.算法有流算法和分组加密算法,流算法是逐字节加,由于其容易被破译,现在已很少使用:分组加密算法是将数 ...
- [Excel]鼠标右键菜单没有新建Word、Excel、PPT怎么办?
很多朋友在安装好Office(2010或2013等)之后,发现右键新建中没有Word.Excel.PowerPoint等项,但是自己的Office却明明安装好了.这个时候该怎么办呢?这里,本文为大家提 ...
- Hive入门学习随笔(二)
====使用Load语句执行数据的导入 --将操作系统上的文件student01.txt数据导入到t2表中 load data local inpath '/root/data/student01.t ...