を暗号化するために、私は のようなものを見るために、ユーザーにしたいクエリ文字列パラメータを、暗号化するためにネットコアミドルウェアを書いています?ENC = VXzal017xHwKKPolDWQJoLACDqQ0fE // wGkgvRTdG/GgXIBDd1 コードは、この を見ながら?ユーザー= 123 &アカウント= 456。ミドルウェアは、クエリ文字列
私はIDataProtectorを使用してパラメータを暗号化します。私のミドルウェアでの呼び出しは()、以下のコード
if (UriHelper.GetEncodedUrl(context.Request).Contains("?"))
{
string query = ExtractQuery((context.Request.GetEncodedUrl()));
int indexOfEnc = query.IndexOf(PARAMETER_NAME, StringComparison.OrdinalIgnoreCase);
if (indexOfEnc > -1)
{
var enc = context.Request.Query[PARAMETER_NAME];
enc = Decrypt(enc);
context.Request.Path = new PathString(context.Request.Path.Value + enc);
await _next.Invoke(context);
}
else if (context.Request.Method == "GET" || context.Request.Method == "POST")
{
// Encrypt the query string and redirects to the encrypted URL.
// Remove if you don't want all query strings to be encrypted automatically.
string encryptedQuery = Encrypt(query);
string tempRawUrl = UriHelper.GetEncodedUrl(context.Request).ToLower();
if (!(context.Request.Method == "POST" && tempRawUrl.Contains("ha")))
{
context.Response.Redirect(context.Request.Path.Value + "?" + PARAMETER_NAME + "=" + encryptedQuery);
}
}
}
else
{
await _next.Invoke(context);
}
私は、ログイン初めてのように見え、ユーザー/パスを入力したコードは、上記のelseif節に入って来、細かい暗号化されます。セクションには、何もしない場合、私は次回のparam「ENC」クエリを探し、それを復号化しますしながらパスがよさそうだ、中
**await _next.Invoke(context);**
。私はそれがユーザー/パスを検証するためにコントローラに行くことを期待しています。
ここに私と一緒にいらしてください。これは私の最初のミドルウェアで、私のレガシーコードでhttphandlersを置き換えようとしています。
何か助けていただければ幸いです。私はこれに約5時間を費やしており、それを理解することはできないようです。
質問には関係ありませんが、クエリ文字列を暗号化して解決しようとしている問題はありますか? – CodeCaster
クライアントIDだけでなくクエリ文字列にクライアント固有の秘密鍵を渡す必要があり、プレーンテキストとして入力する必要はありません。 – Vish