0

关于另一个问题的这个答案的第一部分解释了现有的 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 证明)。

4

1 回答 1

1

您应该将 Web 应用程序的身份验证代码(返回登录名的代码)与您公开 API 的身份验证代码分开。

看起来您正在为网站部分使用表单身份验证,您应该保持这种方式。但是,在公共 API GetCategoryList 中,您应该使用 ActionFilters 实施不同的身份验证策略。

于 2013-09-26T16:28:59.413 回答