• 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);
                }
            }   
    

      

  • 相关阅读:
    html5 保存图片到服务器本地
    html5 canvas分层
    webstorm配置scss自动编译路径
    微信开发测试号配置
    html5手机网站需要加的那些meta/link标签,html5 meta全解
    css去掉iPhone、iPad默认按钮样式
    如何激活webstorm 11
    min-height在安卓下不起作用
    基于字符串模式的路由路径的一些示例。
    nodeJS搭建本地服务器
  • 原文地址:https://www.cnblogs.com/wjbych/p/10431091.html
Copyright © 2020-2023  润新知