this answer关于另一个问题的第一部分解释了现有MVC网站如何能够非常快速地向其添加公开其数据的能力(例如,向请求数据的Winforms应用程序),一对一对代码行(无需转换为WCF / Web API并添加额外的图层 - 我们的项目非常小且基本):
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证明)。
答案 0 :(得分:1)
您应该将Web应用程序(返回登录的应用程序)的身份验证代码与您公开API的身份验证代码分开。
看起来您正在为WebSite部件使用表单身份验证,您应该保持这种方式。但是,在公共API GetCategoryList中,您应该使用ActionFilters实现不同的身份验证策略。