我在使用Marionette &主幹使用單頁面應用程序(SPA)編寫的單頁應用程序(MMO)使Microsoft MVC的[ValidateAntiForgeryToken]
工作時出現問題。問題似乎是MVC [ValidateAntiForgeryToken]
方法無法看到我們作爲JSON的一部分發送的令牌。我們認爲這是因爲令牌必須位於回覆的表格部分,但MrOggy85表示這不是問題(請參閱下面的答案)。如何使用骨幹單頁應用程序測試MVC4中的AntiForgeryToken
該代碼是在我的api控制器,它使用AttributeRouting,我們認爲這是導致問題。一個典型的動作如下所示:
// POST api/vizschemes/
[POST("")]
[Authorize(Roles = "...some role...")]
[ValidateAntiForgeryToken]
public ActionResult Add(CreateUpdateSmVizSchemeDto dto, ICreateSmVizScheme service)
{
... code to update the VizScheme and return json
}
有沒有其他人克服了這個問題?大量的谷歌搜索引發了評論post「ASP.NET MVC通過AntiForgery類和[ValidateAntiForgeryToken]屬性提供了對防僞令牌的內置支持。目前,這個功能並沒有內置到Web API中。但是,(KnockoutJS)模板包含Web API的自定義實現。「。這表明他們自己寫,我可以做。
有沒有人打過這個,如果是的話你是如何解決它的?我錯過了一些明顯的東西,還是應該編寫自己的ValidateAntiForgeryToken方法?您的意見將不勝感激。通過@ MrOggy85在它大量的詳細信息提供
UPDATE
GREAT計算器的鏈接。請參閱How can i supply an AntiForgeryToken when posting JSON data using $.ajax?。我打算編寫自己的AntiForgery測試,並在完成後發佈。
嗨@mor,謝謝你。我的問題是處理MVC [ValidateAntiForgeryToken],如果我在MVC中使用標準方法,則需要所有數據作爲表單提交返回。問題是,我應該改變Backbone來做到這一點,或者在MVC中實現我自己對令牌的檢查。我想知道是否有其他人在使用MVC構建單頁面應用程序時遇到了這個問題,以及他們對此做了什麼。 –