特定のコントローラーアクションがPOSTまたはGETのどちらを予期しているかをどのように判断できますか?

ゲイリー・マギル

ASP.NET Identityを使用する標準のMVCプロジェクトでは、不正な要求がログインページにリダイレクトされ、ログインReturnUrlが成功した後、最初に要求されたページにさらにリダイレクトできるようにパラメーターがクエリ文字列に追加されます。

アカウントコントローラーにはRedirectToLocalReturnUrlパラメーターがローカルURL(つまり、同じWebサイトのページ)を参照している場合にのみ、その2番目のリダイレクトを実行するために使用されるという名前のメソッドが含まれてます。このチェックを実行するために非常に単純なアプローチを使用し、たとえば、URLが有効なURLであるかどうか、またはアクションにルーティングできるかどうかをチェックしません。

私の場合、ログアウトページ(!)など、絶対にリダイレクトしたくないURLがいくつかあります。また、正常にルーティングできるURLのみにリダイレクトしたいと思います。

これを実現するために、URLをルートに変換するようにコードを変更しました(これと同様の手法を使用)。これRouteDataにより、コントローラーとアクションの名前を調べることができるオブジェクトが得られます(したがって、特定のブロックされたアクションを除外できます)。

これをさらに進めて、POSTデータを期待するコントローラーアクションを除外したいと思います(それらにリダイレクトできないため)。そう...

コントローラ名とアクション名が与えられた場合、これがGETアクションかPOSTアクションかをどのように判断できますか?

実際にアクションを実行する前の時点まで、MVCフレームワークが通常行うルーティング/バインディングを呼び出す方法はありますか?

ジェイソン・エバンス

私はあなたがやりたいことをするための組み込み機能があるとは思いません。

私はちょうどで簡単に見なければならなかったASP.NET MVC 5(ソースをSystem.Web.Mvc.dll(使用)dotPeekを場所を確認するために)[HttpPostAttribute]使用されています。率直に言って、アクションメソッドを使用して着信リクエストを処理できるかどうかを判断することは、その場で行われます。のように、その決定に関係する高レベルの拡張メソッドまたはヘルパークラスはありません。少なくとも、私が見ることができるものから明らかなことは何もありません。アクションメソッドがリクエストを処理できるかどうかを判断するために使用されている内部メソッド/ヘルパーのように見えました。

主な目標をどのように達成できるかについてはよくわかりませんが、ソースコードをスキャンして見つけたものについては触れておきたいと思いました。当然のことながら、ソースを自分で自由に見てください。私が見逃したものを見つけるかもしれません。その場合、将来同じニーズを持つ可能性のある他の人を助けるために、ここにあなたの発見を投稿してください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Xcodeでは、ユーザーがアプリで特定のアクションを実行した場合にのみアクセスできるビューコントローラーをどのように作成しますか?

分類Dev

SATAコントローラーに障害が発生しているかどうかをどのように判断できますか?

分類Dev

サーバーはどのようにしてクライアントからのコレクションをサブスクライブできますか?

分類Dev

RTTIがない場合、C ++では、コレクション内のオブジェクトがインターフェイスを実装しているかどうかを実行時にどのように判断できますか

分類Dev

ビジネスアクション(メソッド)をドメインオブジェクト(クラス)またはドメインサービス(クラス)のどちらに配置する必要があるかを判断するにはどうすればよいですか?

分類Dev

どのように私は春にトランザクションにいるかどうかを判断することができますか?

分類Dev

特定のコントローラーアクションの例外イベントリスナーを作成して、元の引数を使用して別のアクションにリダイレクトするにはどうすればよいですか?

分類Dev

デスクトップ環境のアプリケーションが他のDEのモジュール、ライブラリなどをロードしているかどうかをどのように知ることができますか?

分類Dev

どの依存関係が他のライブラリのバージョンを決定しているのかをどのように判断できますか?

分類Dev

Javascript-ユーザーがモバイル通知コントロールから再生/一時停止を押したときにデフォルトのアクションをオーバーライドするにはどうすればよいですか?

分類Dev

スクリプトは、仮想コンソールとxtermのどちらにいるのかをどのように知ることができますか?

分類Dev

このコードがどのように入力を取得するのか、またこのコードがバッファオーバーフローによるアークインジェクションに対してどのように脆弱であるのかを誰かが説明/示すことができますか?

分類Dev

メッセージがメインプロセスのsendまたはsendSyncのどちらからのものかをどのように判断しますか?

分類Dev

コードをドライアップして、アクションコントローラーとRails 5のアプリケーションレコードからさまざまなCSVをエクスポートするにはどうすればよいですか?[解決済み]

分類Dev

クライアントがServiceWorkerからBackgroundSyncをサポートしているかどうかをどのように検出できますか?

分類Dev

Reactでは、コンポーネントがクライアントまたはサーバーからレンダリングされているかどうかをどのように検出しますか?

分類Dev

アンワインドセグエ(ショー)を実行した場合、母親のビューコントローラーはどのようにして子供のビューコントローラーを取得できますか?

分類Dev

jQueryからMVCコントローラーアクションに特定のIDを渡すにはどうすればよいですか?

分類Dev

ユーザーが開始または終了にドラッグしたとき(曲線の青い線が表示されたとき)に特定のアクションをListViewに追加するにはどうすればよいですか?

分類Dev

特定のコントローラーまたはアクションの基本レイアウトをオーバーライドするにはどうすればよいですか?

分類Dev

アプリケーションのコンソールウィンドウがフォーカスを取得または喪失したときを判断するにはどうすればよいですか?

分類Dev

特定のコントローラーアクションを呼び出して、その中のコード、特にセッション変数をテストするにはどうすればよいですか?

分類Dev

Firebaseは、ペイロードにアンダースコア文字が含まれているJWTトークンをどのように送信できますか?

分類Dev

javaFXアプリケーションが相対パスから画像をロードしていることをどのように確認できますか?

分類Dev

シェルスクリプトからマシン上で特定のポートが開いているかどうかを確認し、それに基づいてアクションを実行するにはどうすればよいですか?

分類Dev

「このプロジェクトタイプの基になっているアプリケーションが見つかりませんでした」を解決するにはどうすればよいですか。エラー?

分類Dev

asp net core 3.1コントローラーの特定のアクションで基本認証を設定するにはどうすればよいですか?

分類Dev

Linuxでは、どのプロセスが最もネットワーク帯域幅を使用しているかをどのように判断できますか?

分類Dev

SQLiteデータベースから選択した特定の値を取得するにはどうすればよいですか?ボタンをクリックすると、アプリの突き出しがクラッシュします

Related 関連記事

  1. 1

    Xcodeでは、ユーザーがアプリで特定のアクションを実行した場合にのみアクセスできるビューコントローラーをどのように作成しますか?

  2. 2

    SATAコントローラーに障害が発生しているかどうかをどのように判断できますか?

  3. 3

    サーバーはどのようにしてクライアントからのコレクションをサブスクライブできますか?

  4. 4

    RTTIがない場合、C ++では、コレクション内のオブジェクトがインターフェイスを実装しているかどうかを実行時にどのように判断できますか

  5. 5

    ビジネスアクション(メソッド)をドメインオブジェクト(クラス)またはドメインサービス(クラス)のどちらに配置する必要があるかを判断するにはどうすればよいですか?

  6. 6

    どのように私は春にトランザクションにいるかどうかを判断することができますか?

  7. 7

    特定のコントローラーアクションの例外イベントリスナーを作成して、元の引数を使用して別のアクションにリダイレクトするにはどうすればよいですか?

  8. 8

    デスクトップ環境のアプリケーションが他のDEのモジュール、ライブラリなどをロードしているかどうかをどのように知ることができますか?

  9. 9

    どの依存関係が他のライブラリのバージョンを決定しているのかをどのように判断できますか?

  10. 10

    Javascript-ユーザーがモバイル通知コントロールから再生/一時停止を押したときにデフォルトのアクションをオーバーライドするにはどうすればよいですか?

  11. 11

    スクリプトは、仮想コンソールとxtermのどちらにいるのかをどのように知ることができますか?

  12. 12

    このコードがどのように入力を取得するのか、またこのコードがバッファオーバーフローによるアークインジェクションに対してどのように脆弱であるのかを誰かが説明/示すことができますか?

  13. 13

    メッセージがメインプロセスのsendまたはsendSyncのどちらからのものかをどのように判断しますか?

  14. 14

    コードをドライアップして、アクションコントローラーとRails 5のアプリケーションレコードからさまざまなCSVをエクスポートするにはどうすればよいですか?[解決済み]

  15. 15

    クライアントがServiceWorkerからBackgroundSyncをサポートしているかどうかをどのように検出できますか?

  16. 16

    Reactでは、コンポーネントがクライアントまたはサーバーからレンダリングされているかどうかをどのように検出しますか?

  17. 17

    アンワインドセグエ(ショー)を実行した場合、母親のビューコントローラーはどのようにして子供のビューコントローラーを取得できますか?

  18. 18

    jQueryからMVCコントローラーアクションに特定のIDを渡すにはどうすればよいですか?

  19. 19

    ユーザーが開始または終了にドラッグしたとき(曲線の青い線が表示されたとき)に特定のアクションをListViewに追加するにはどうすればよいですか?

  20. 20

    特定のコントローラーまたはアクションの基本レイアウトをオーバーライドするにはどうすればよいですか?

  21. 21

    アプリケーションのコンソールウィンドウがフォーカスを取得または喪失したときを判断するにはどうすればよいですか?

  22. 22

    特定のコントローラーアクションを呼び出して、その中のコード、特にセッション変数をテストするにはどうすればよいですか?

  23. 23

    Firebaseは、ペイロードにアンダースコア文字が含まれているJWTトークンをどのように送信できますか?

  24. 24

    javaFXアプリケーションが相対パスから画像をロードしていることをどのように確認できますか?

  25. 25

    シェルスクリプトからマシン上で特定のポートが開いているかどうかを確認し、それに基づいてアクションを実行するにはどうすればよいですか?

  26. 26

    「このプロジェクトタイプの基になっているアプリケーションが見つかりませんでした」を解決するにはどうすればよいですか。エラー?

  27. 27

    asp net core 3.1コントローラーの特定のアクションで基本認証を設定するにはどうすればよいですか?

  28. 28

    Linuxでは、どのプロセスが最もネットワーク帯域幅を使用しているかをどのように判断できますか?

  29. 29

    SQLiteデータベースから選択した特定の値を取得するにはどうすればよいですか?ボタンをクリックすると、アプリの突き出しがクラッシュします

ホットタグ

アーカイブ