どのように私はASP.Net(またはIISは?)承認スクリプトに渡すのではなく、私のURLエンコードされた暗号文(404その結果)をデコードすることを避けていますか?

StackOverflow https://stackoverflow.com/questions/578548

質問

私は、ユーザーが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としてそれをエンコードすることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top