關於另一個問題this answer的第一部分解釋了現有MVC網站如何能夠非常快速地向其添加公開其數據(例如,向Winforms應用程序請求數據)的能力,所有這些都是爲了幾行代碼(無需轉換到WCF /網絡API和添加額外的圖層 - 我們的項目是非常小的和基本):如何保護JsonResult?
public JsonResult GetCategoryList()
{
var list = //return list
return Json(list, JsonRequestBehavior.AllowGet);
}
所以我們測試過上述作爲一個快速簡便的解決方案,它顯然是非常近的工作,因爲在流中,我們獲得了MVC應用程序登錄的html源代碼。
事實上,如果我們添加AllowAnonymous註釋,我們做得到我們之後的Json流。
但是我們不想讓匿名,我們想要一些保護。是否嘗試過加入:
Dim nc As New NetworkCredential("username", "password")
request.Credentials = nc
剛燒製request.GetResponse
之前,但不工作(這可能是完全不知道,但它似乎值得一試)。當我說它不工作時,我的意思是我們回到獲取流中的登錄頁面的html源代碼。
那麼如何讓winforms應用程序通過其對數據的請求來實現某種認證(這將起作用)呢?正如我所說,獲取數據正在工作(由AllowAnonymous證明)。
如果我使用ActionFilter註釋GetCategoryList操作,例如 isnt仍然期待表單身份驗證?這是如何改變其「傾聽」來自winforms應用程序的請求的意願? –
hawbsl
您可以通過使用web.config中的標籤或在控制器文件夾中創建另一個web.config來像這裏解釋的那樣禁用控制器位置的FormsAuth(http://stackoverflow.com/questions/3750917/mvc-authentication-繞過單個控制器操作),所以它不會通過這些路由中的FormsAuth,或者可以將Api控制器放入IIS中另一個網站/應用程序中的另一個項目中。 –
tucaz