Foxtable(狐表)用户栏目专家坐堂 → HTTP用户身份验证


  共有2846人关注过本帖树形打印复制链接

主题:HTTP用户身份验证

美女呀,离线,留言给我吧!
tesia255
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:240 积分:2041 威望:0 精华:0 注册:2011/9/19 9:21:00
  发帖心情 Post By:2017/10/23 22:48:00 [只看该作者]

正确返回数据了

但是还是没跳转到首页,还是停留在登录页面,且是空白页
[此贴子已经被作者于2017/10/23 23:00:39编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/10/23 23:34:00 [只看该作者]

msgbox(Verified)弹出什么值?调试技巧http://www.foxtable.com/webhelp/scr/1485.htm

If Verified  AndAlso e.Path = "logon.htm"  Then '如果用户访问的是登录页,且身份验证成功

 回到顶部
美女呀,离线,留言给我吧!
tesia255
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:240 积分:2041 威望:0 精华:0 注册:2011/9/19 9:21:00
  发帖心情 Post By:2017/10/23 23:50:00 [只看该作者]

可以了

十分感谢
[此贴子已经被作者于2017/10/24 0:05:33编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
石四
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2019/3/7 10:25:00 [只看该作者]

蓝版给看看,应该怎么改:
Dim e As RequestEventArgs = args(0)
Static UserTable As DataTable '定义一个变量,用于存储用户随机身份ID,以及最后一次活动时间.
Static ClearTime As Date
If UserTable Is Nothing Then '创建用于记录登录信息的临时表
    ClearTime = Date.Now()
    Dim dtb As New DataTableBuilder("UserInfos")
    dtb.AddDef("UserName", Gettype(String), 16)
    dtb.AddDef("UserID",Gettype(String),16)
    dtb.AddDef("ActiveTime",Gettype(Date))
    UserTable = dtb.Build(True)
End If
If (Date.Now - ClearTime).TotalMinutes >= 30 Then '清除超过30分钟没有操作的登录信息
    UserTable.DeleteFor("ActiveTime < #" & Date.Now.AddMinutes(-30) & "#")
    ClearTime = Date.Now()
End If

Dim sb As New StringBuilder
'身份验证
Dim UserName As String
Dim Password As String
Dim UserID As String
If e.Path = "logon.htm" '验证用户名和密码
    If e.PostValues.ContainsKey("username") AndAlso e.PostValues.ContainsKey("password")  Then
        Dim Verified As Boolean '用于标记用户是否通过了身份验证
        UserName = e.PostValues("username")
        Password = e.PostValues("password")
        
        Dim cmd As New SQLCommand
        Dim dt0 As DataTable
        Dim dr0 As DataRow
        cmd.C
        cmd.CommandText = "Select * Fro m {Users} "
        dt0 = cmd.ExecuteReader
        dr0 = dt0.Find("name ='" & UserName & "'")
msgbox(dr0 Is Nothing)
msgbox(username & " | " & password)
If dr0 IsNot Nothing Then
    msgbox(username & " | " & password & " | " & dr0("password"))
End If
        If dr0 IsNot Nothing AndAlso Password = dr0("password") Then
            Verified  = True
        End If
        
        If Verified Then
            UserID = Rand.NextString(16) '生成随机用户ID
            MessageBox.Show(username) '这里弹出什么内容
            UserName = EncryptText(UserName,"123","123") '将用户名加密.
            Dim dr As DataRow = UserTable.Find("UserName = '" & UserName & "'")
            If  dr IsNot Nothing Then '如果是重复登录,删除以前的登录信息
                dr.Delete()
            End If
            dr = UserTable.AddNew()
            dr("UserName") = UserName
            dr("UserID") = UserId
            dr("ActiveTime") = Date.Now '记录登录时间
            e.Appendcookie("username",UserName) '将用户名和密码写入cookie
            e.Appendcookie("password",Password)
            MessageBox.Show(username) '这里弹出什么内容
            e.WriteString("<meta http-equiv='Refresh' c>") '直接跳转到首页
            MessageBox.Show(3)
            Return "" '必须的
        End If
    End If
Else '其它页面从Cookie提取登录信息进行验证
    UserName = e.Cookies("username")  '从cookie中获取用户名
    UserID = e.Cookies("userid")  '从cookie中获取 随机ID
    Dim dr As DataRow = UserTable.Find("UserName = '" & UserName & "'")
    If dr IsNot Nothing AndAlso dr("UserID") = UserID Then  '如果通过验证,更新活动时候,继续访问其它页面.
        dr("ActiveTime") = Date.Now '更新活动时间
    Else '如果验证失败
        MessageBox.Show(4)
        e.WriteString("<meta http-equiv='Refresh' c>") '那么直接跳转到登录页面
        Return ""  '必须的
    End If
End If'开始生成网页
............

 dr0 = dt0.Find("name ='" & UserName & "'")
msgbox(dr0 Is Nothing)
这里返回true,所以登录不上主页。

 回到顶部
帅哥哟,离线,有人找我吗?
石四
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2019/3/7 10:29:00 [只看该作者]

Dim e As RequestEventArgs = args(0)
Dim sb As New StringBuilder
Dim Verified As Boolean
Dim UserName As String = e.Cookies("username") '从cookie中获取用户名
Dim Password As String = e.Cookies("password") '从cookie中获取用户密码
'如果在登录页面输入了用户名和密码后单击确定按钮
If e.Path = "logon.htm" AndAlso e.PostValues.ContainsKey("username") AndAlso e.PostValues.ContainsKey("password")  Then
    UserName = e.PostValues("username")
    Password = e.PostValues("password")
End If
'验证用户身份
Dim cmd As New SQLCommand
Dim dt0 As DataTable
Dim dr0 As DataRow
cmd.C
cmd.CommandText = "Select * Fro m {Users} "
dt0 = cmd.ExecuteReader
dr0 = dt0.Find("name ='" & UserName & "'") 
msgbox(dr0 Is Nothing)
msgbox(username & " | " & password)
If dr0 IsNot Nothing Then
    msgbox(username & " | " & password & " | " & dr0("password"))
End If
 
If dr0 IsNot Nothing AndAlso Password = dr0("password") Then
    Verified  = True
End If
If Verified AndAlso e.Path = "logon.htm"  Then '如果用户访问的是登录页,且身份验证成功
    e.Appendcookie("username",UserName) '将用户名和密码写入cookie
    e.Appendcookie("password",Password)
    e.WriteString("<meta http-equiv='Refresh' c>") '直接跳转到首页
    Return "" '必须的
ElseIf Verified = False AndAlso e.Path <> "logon.htm" Then '如果用户身份验证失败,且访问的不是登录页面
    e.WriteString("<meta http-equiv='Refresh' c>") '那么直接跳转到登录页面
    Return "" '必须的
End If

'开始生成网页
.......................
这样可以,但是想用加密的方法。

 回到顶部
帅哥哟,离线,有人找我吗?
石四
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2019/3/7 10:42:00 [只看该作者]

刚刚又测试,返回的值都正确,但就是不进入主页,绕开了。
..........
 e.Appendcookie("username",UserName) '将用户名和密码写入cookie
            e.Appendcookie("password",Password)
            MessageBox.Show( Verified ) '这里弹出什么内容
            e.WriteString("<meta http-equiv='Refresh' c>") '直接跳转到首页
            MessageBox.Show(3)
            Return "" '必须的
...............
  MessageBox.Show( Verified ) 
返回true


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/7 10:58:00 [只看该作者]

1、httprequest那里加入代码

 

msgbox(e.path)

 

2、下面代码,msgbox都弹出了没有?

 

MessageBox.Show( Verified ) '这里弹出什么内容
e.WriteString("<meta http-equiv='Refresh' content='0; url=/default.htm'>") '直接跳转到首页
MessageBox.Show(3)

 

3、做个具体实例发上来测试一下吧

 


 回到顶部
帅哥哟,离线,有人找我吗?
石四
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2019/3/7 13:51:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:yyy.rar

实例做好了


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/7 15:03:00 [只看该作者]

            dr = UserTable.AddNew()
            dr("UserName") = UserName
            dr("UserID") = UserId
            dr("ActiveTime") = Date.Now '记录登录时间
            e.Appendcookie("username",UserName) '将用户名和密码写入cookie
            e.Appendcookie("userid",userid)

 回到顶部
帅哥哟,离线,有人找我吗?
石四
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2019/3/7 15:49:00 [只看该作者]

ok!thanks

 回到顶部
总数 20 上一页 1 2