2014-11-14 87 views
0

我已經開始使用asp mvc 3,然後使用c#和剃鬚刀。我想使用帶有安全性的表單發送請求POST。如何使用csrf令牌asp c#?

我想用剃刀呈現一些像

<form action="/sass/" method="post"> 
    @using (Html.BeginForm()) { 
     @Html.AntiForgeryToken() 
     <div class="form-group"> 
      <label>Ingresa tu Nombre</label> 
      <input class="form-control" name="nombre" /> 
     </div> 
     <div class="form-group"> 
      <input type="submit" value="Enviar mi duda" class="btn btn-primary btn-sm" /> 
     </div> 
    } 

而在C#我不知道如何來驗證CSRF令牌,是有效的。我使用C#,asp mvc3和剃鬚刀。

請幫幫我!

回答

3

在您的操作方法中,您需要添加相應的屬性[ValidateAntiForgeryToken],並驗證您的輸入。

+0

如果這個答案是對您有用,請接受它。 – 2014-12-18 20:49:35

1

您的代碼狀態有問題。有兩種嵌入式格式:外部格式和由Html.BeginForm生成的格式。但是,驗證令牌的方法是用[ValidateAntiForgeryToken]修飾目標操作或控制器。

因此,要麼:

[ValidateAntiForgeryToken] 
public ActionResult Index() 
{ 
    return View(); 
} 

或驗證所有方法控制器:

[ValidateAntiForgeryToken] 
public class MyController : Controller 
{ 
} 
+0

如何我應該把我的表單與自由參數,所以:

。它使用Html.BeginForm() – ray 2014-11-14 14:29:38

+0

@ray,最簡單的解決方案是刪除'using(Html.BeginForm)'...... – Candide 2014-11-14 14:34:17

+0

正如我今天所瞭解的,AntiForgeryToken和CsrfToken之間有所不同。 Csrf比AntiForgery更具限制性。但屬性仍然是一條路。 – Tobias 2014-11-14 18:59:53