以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  token验证失败  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=143205)

--  作者:qqhealth
--  发布时间:2019/11/17 19:51:00
--  token验证失败
老师您好,帮助代码中的token已改为sinohmo,但是验证失败,不知问题在哪?谢谢!

图片点击可在新窗口打开查看此主题相关图片如下:批注 2019-11-17 194543.jpg
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2019/11/17 20:32:00
--  
服务端代码也要跟着改的http://www.foxtable.com/mobilehelp/topics/0175.htm

Dim token = "foxtable" \'必须和设置的Token相同

--  作者:qqhealth
--  发布时间:2019/11/17 21:38:00
--  
老师您好,我是在BS项目的服务端按照帮助改的服务端代码,出现token验证失败。谢谢!
--  作者:有点蓝
--  发布时间:2019/11/17 21:58:00
--  
贴出服务端对应的完整代码看看

Dim token = "sinohmo" \'必须和设置的Token相同

--  作者:qqhealth
--  发布时间:2019/11/17 22:39:00
--  
httprequest:

Case "wefox"
        If e.Request.HttpMethod.ToUpper = "GET"
            If Functions.Execute("VerifySignature",e) Then
                e.WriteString(e.GetValues("echostr"))
            End If
        End If

自定义函数VerifySignature:
Dim e As RequestEventArgs = Args(0)
Dim token = "sinohmo" \'必须和设置的Token相同
Dim signature As String = e.GetValues("signature")
Dim timestamp As String = e.GetValues("timestamp")
Dim nonce As String = e.GetValues("nonce")
Dim echostr As String = e.GetValues("echostr")
Dim aryTmp() As String = {token,timestamp,nonce}
Array.Sort(aryTmp)
Dim strTmp As String = String.Join("", aryTmp)
strTmp = Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strTmp, "SHA1")
Return signature = strTmp.ToLower

调试工具结果,没有调试token验证的,access token验证可以

图片点击可在新窗口打开查看此主题相关图片如下:批注 2019-11-17 2.jpg
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2019/11/17 23:00:00
--  
httprequest事件能不能触发?请把完整事件代码发上来

msgbox(e.path) ‘能不能弹出?
select case e.path
Case "wefox"
        If e.Request.HttpMethod.ToUpper = "GET"
            If Functions.Execute("VerifySignature",e) Then
                e.WriteString(e.GetValues("echostr"))
            End If
        End If

--  作者:qqhealth
--  发布时间:2019/11/18 10:13:00
--  
老师您好,
msgbox(e.path) 
select case e.path
...
Case "wefox"
        If e.Request.HttpMethod.ToUpper = "GET"
            If Functions.Execute("VerifySignature",e) Then
                e.WriteString(e.GetValues("echostr"))
            End If
        End If
end select  这样可以弹出。

select case e.path
...
msgbox(e.path) 
Case "wefox"
        If e.Request.HttpMethod.ToUpper = "GET"
            If Functions.Execute("VerifySignature",e) Then
                e.WriteString(e.GetValues("echostr"))
            End If
        End If
end select  这样就不能弹出。
完整代码如下,谢谢!
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:httprequest代码.txt




--  作者:有点蓝
--  发布时间:2019/11/18 10:42:00
--  
if e.path = "wefox"
        If e.Request.HttpMethod.ToUpper = "GET"
            If Functions.Execute("VerifySignature",e) Then
                e.WriteString(e.GetValues("echostr"))
            End If
        End If
else
Dim wb As New weui \'身份验证
Dim Verified As Boolean \'用于标记用户是否通过了身份验证
Dim UserName As String = e.Cookies("username")
Dim Password As String = e.Cookies("password")
If e.Path = "logon.htm" \'验证用户名和密码
    If e.PostValues.ContainsKey("username") AndAlso e.PostValues.ContainsKey("password")  Then
        UserName = e.PostValues("username")
        Password = e.PostValues("password")
    End If
End If
………………原来httprequest的其它代码
end if

--  作者:qqhealth
--  发布时间:2019/11/18 12:05:00
--  
谢谢老师