どのように私はASP.Net(またはIISは?)承認スクリプトに渡すのではなく、私のURLエンコードされた暗号文(404その結果)をデコードすることを避けていますか?
-
06-09-2019 - |
質問
私は、ユーザーがSQLメンバシッププロバイダを使用して会員に登録するASP.Net MVCでのWebアプリケーションの作品に取り組んでいます。彼らが登録すると、彼らはシステムに入れたが、承認されていません。コードは、指定したメールでユーザーに承認メールを送信します。
BfEncrypt refid = new BfEncrypt();
refid.Encrypt(user.ReferenceID);
string code = HttpContext.Current.Server.UrlEncode(refid.CipherText);
...
Body += "<a href=\"http://localhost:1091/approve/" + code + "\">Approval Link</a>\n\r\n\r";
しかし、ユーザーは、彼らが次のエラーを取得するリンクをクリックしたときます:
それがアクションを呼び出そうとする前に、説明:HTTP 404あなたが探しているリソース(またはその依存関係の1つ) 削除された可能性があり、その名前が変更された、または一時的に利用できません。 以下のURLを確認し、それが正しく入力されていることを確認してください。
要求されたURL:/承認/ K / 9IHrY43os =
質問は、私はそれを送信する前にリンクをコードするURLだ場合、なぜそれが解読されていますか? // localhostを:1091 /承認/ K%2f9IHrY43os%私のブラウザでURLは実際には「ですhttp 3D の」私はエラーを取得します。私のルーティングが正しくセットアップされているが、それはURL内の暗号化された文字列に余分な「/」を考慮していない(それはとにかくすべきではないからです。)
解決
あなたは代わりにURLENCODEを使用してのBASE64としてそれをエンコードすることができます。
所属していません StackOverflow