防止同一用户重复登录的解决办法(SQL Server)-红尘如烟
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-模块/函数/VBA


防止同一用户重复登录的解决办法(SQL Server)

发表时间:2010/11/21 评论(2) 浏览(54204)  评论 | 加入收藏 | 复制
   
摘 要:在开发管理信息系统的时候,经常会遇到需要防止同一个用户多次登录的问题,这时介绍了一种简单易行的办法。
正 文:

在开发管理信息系统的时候,经常会遇到需要防止同一个用户多次登录的问题,这里介绍了一种简单易行的办法。
注意:此方法仅适用于以SQL Server作为数据库的情况下。

实现思路:在SQL Server中,当连接断开之后,系统会自动将临时表回收,因此我们就可以通过创建和登录用户名对应的全局临时表,然后登录时判断这个临时表是否存在。如果存在,说明其对应的用户名已登录,则弹出消息提示不能重复登录;如果不存在,则登录并创建临时表。

说明:使用此方法的优点再于,已登录标记是在客户端发送请求并建立连接后创建的,但退出登录则不需要客户端去处理,只要到SQL Server的连接断开了,这个标记就会被自动销毁,这个销毁操作是由数据库服务器来执行的。因此即使客户端因为断电、程序崩溃一类的原因非正常退出,并且不论一个用户是在同一台电脑上登录,还是在不同的电脑上登录,也都是有效的!不需要管理员到用户表中去修改用户的登录状态什么的。

Function IsLogged(UserID As String) As Boolean
'判断指定用户是否登录,已登录返回True
    Dim rst As Object
    Dim cnn As Object

    Set cnn=CreateObject("ADODB.Connection")
    cnn.Open "Provider=SQLOLEDB;Data Source=服务器名或IP或域名","数据库用户名","数据库用户密码"
    Set rst = cnn.Execute("Select OBJECT_ID('##LoggedUser" & UserID & "') AS ID")
    If Not IsNull(rst!ID) Then IsLogged=True
    rst.Close
    cnn.Close
End Function

Function UserLoginRegister(UserID As String) As Boolean
'创建登录标识(即创建用户名对应的临时表)
    Dim cnn As Object
    Set cnn=CreateObject("ADODB.Connection")
    cnn.Open "Provider=SQLOLEDB;Data Source=服务器名或IP或域名","数据库用户名","数据库用户密码"
    cnn.Execute "Create TABLE ##LoggedUser" & UserID & "(userid varchar(1))"
    cnn.Close
End Function

'然后我们在登录窗体窗体的“登录”按钮事件中进行如下判定:
Private Sub cmdLogin_Click()
    If IsNull(Me.txtUserName) Then
        MsgBox "请输入用户名!",vbExclation
        Exit Sub
    End If

    If Is Logged(Me.txtUserName) Then
        MsgBox "此用户已登录!",vbInformation
    Else
       '密码验证代码略
        UserLoginRegister Me.txtUserName
        DoCmd.OpenForm "frmMain"
    End If

End Sub


Access软件网交流QQ群(群号:198465573)
 
 相关文章
如何创建登录界面的背景图片  【褚玉春  2007/6/15】
登录模块的实现系列之一  【lenovo  2008/11/15】
【access小品】鹤舞---动态登录窗体  【todaynew  2010/2/21】
获取本机的IP 计算机名 登录操作系统用户名  【不详  2010/7/20】
【access源码示例】具有记住密码、自动登录等功能的登录窗体  【红尘如烟  2010/10/27】
[Acc示例]用户登录与退出时间记录示例  【十段  2011/3/19】
登录界面  【lyxiong  2012/2/24】
Access数据库创建用户登录  【心态哥  2012/8/13】
常见问答
技术分类
相关资源
文章搜索
关于作者

红尘如烟

文章分类

文章存档

友情链接