2017-11-10 9 views
4

もっと詳しく説明できます。ASP.NET MVC 5では、POSTリクエストが独自のWebページから取得されたことをフレームワークがどのように認識していますか?

私は、Visual Studio 2017を使用してASP.NETのMVC 5を学習し、テストしています。コントローラの「アクション」またはメソッドは、「RouteConfig.cs」のルートフォーマットに従ってマップされています。すべてのパブリックメソッドはWebリクエストにアクセスできます。このように、ビューを返す単純なGETメソッドの場合

:私は唯一の正しいURLを入力する必要があるだろうと私はビューを取得している

// GET: Movies/Create 
public ActionResult Create() 
{ 
    return View(); 
} 

しかし、データ入力の削除などの賢明なPOSTアクションの場合、コントローラはPOSTリクエストが、未知のWebページではなく、独自のViewsの1つから来る有効なものであることをどのように確認しますか?アクションは、呼び出される一致するルートにマップされている必要があるだけであることを前提にしています。

例として、マイクロソフト社のチュートリアルの1から供給コードを使用する:

public class MoviesController : Controller 
{ 
    private MovieDBContext db = new MovieDBContext(); 

    /* 
    Bunch of Other GET Actions 
    */ 

    // POST: Movies/Delete/5 
    [HttpPost, ActionName("Delete")] 
    [ValidateAntiForgeryToken] 
    public ActionResult DeleteConfirmed(int id) 
    { 
     Movie movie = db.Movies.Find(id); 
     db.Movies.Remove(movie); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 

    /* 
    Bunch of Other GET Actions 
    */ 

} 
このコントローラは、これをどのように実現するのでしょうか?そうでない場合は、どのように達成できますか?

+1

これはすべて、 'ValidateAntiForgeryToken'に関するものです。 Microsoftチュートリアルを参照してください。 –

+0

@AlexKudryashev ok、それを指摘してくれてありがとう。 – CodeIntern

答えて

2

それはValidateAntiForgeryToken属性でアクションメソッドを修飾して検証する偽造トークンの目的です。あなたの意見には、@Html.AntiForgeryToken()HtmlHelperの方法で偽造防止トークンを含める必要があります

0

あなたの例によると、ValidateAntiForgeryTokenはこの仕事を行います。 もう少し説明があれば、MVCは "MyTest"という名前の新しいコントローラを作成すると、MyTestControllerという命名規則を作成するという独自の規律を持っています。つまり、MyTestコントローラのビューを作成すると、MyTestのフォルダがViewの下に作成され、MyTestのビューが保持されるはずです。 私はあなたが私の説明を得ることを望みます。 コーディングをお楽しみください!

関連する問題