asp.Netmvc 5微信アクセスVB版-アクセス認証

3069 ワード

微信アクセス公式ドキュメントはphpで、ネット上で何度も写されたコードはc#で、vbがありません.今日はこの穴を埋めて、vb版のアクセス認証をします.
まず、開発ドキュメントに従って微信アクセスのモデルを書きます.Modelsフォルダに新しいModelを作成する
Public Class WeChatRequestModel
    ''' <summary>
    '''     
    ''' </summary>
    Public Property signature$
    ''' <summary>
    '''    
    ''' </summary>
    Public Property timestamp$
    ''' <summary>
    '''    
    ''' </summary>
    Public Property nonce$
    ''' <summary>
    '''           
    ''' </summary>
    Public Property echostr$
End Class

モデルの作成が完了したら、新しいコントローラを作成します.
微信認証はnonce,Token,timestampをソートし,SHA 1とsignatureを比較する.Tokenは文字列定数として、申請時に記入したTokenに基づいて作成されます.
Const Token = "    Token"

 
残りのコードはそのphpコードを翻訳し、後でaspに移行しないように、古いメンバー、例えばFormsAuthenticationを使用しないように注意します.Netcoreはコードを書き換える:
 1     Private Function SHA1$(str$)
 2         Return Encoding.UTF8.GetString(System.Security.Cryptography.SHA1.Create().ComputeHash(Encoding.UTF8.GetBytes(str)))
 3     End Function
 4     Private Function CheckSignature(data As WeChatRequestModel) As Boolean
 5         Return data.signature = SHA1(String.Join("", Aggregate s In {data.nonce, Token, data.timestamp} Order By s Into ToArray)).ToLower()
 6     End Function
 7     <HttpGet>
 8     Public Sub Authenticate(data As WeChatRequestModel)
 9         If CheckSignature(data) AndAlso Not String.IsNullOrEmpty(data.echostr) Then
10             Response.Write(data.echostr)
11             Response.End()
12         End If
13     End Sub