asp.Netmvc 5微信アクセスVB版-アクセス認証
3069 ワード
微信アクセス公式ドキュメントはphpで、ネット上で何度も写されたコードはc#で、vbがありません.今日はこの穴を埋めて、vb版のアクセス認証をします.
まず、開発ドキュメントに従って微信アクセスのモデルを書きます.Modelsフォルダに新しいModelを作成する
モデルの作成が完了したら、新しいコントローラを作成します.
微信認証はnonce,Token,timestampをソートし,SHA 1とsignatureを比較する.Tokenは文字列定数として、申請時に記入したTokenに基づいて作成されます.
残りのコードはそのphpコードを翻訳し、後でaspに移行しないように、古いメンバー、例えばFormsAuthenticationを使用しないように注意します.Netcoreはコードを書き換える:
まず、開発ドキュメントに従って微信アクセスのモデルを書きます.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