Asp.net mvc 如何确保JsonResult的安全?

Asp.net mvc 如何确保JsonResult的安全?,asp.net-mvc,json,Asp.net Mvc,Json,《关于另一个问题》的第一部分解释了现有MVC站点如何能够非常快速地向其添加公开其数据的能力(例如,向请求数据的Winforms应用程序),所有这些都只需几行代码(无需转换为WCF/Web API并添加额外的层-我们的项目非常小且基本): 因此,我们已经测试了上述方法,将其作为一种快速、简单的解决方案,显然它几乎可以正常工作,因为在流中,我们获得了用于MVC应用程序登录的html源代码 事实上,如果我们添加AllowAnonymous注释,我们就可以得到我们想要的Json流 但是我们不想允许匿名,

《关于另一个问题》的第一部分解释了现有MVC站点如何能够非常快速地向其添加公开其数据的能力(例如,向请求数据的Winforms应用程序),所有这些都只需几行代码(无需转换为WCF/Web API并添加额外的层-我们的项目非常小且基本):

因此,我们已经测试了上述方法,将其作为一种快速、简单的解决方案,显然它几乎可以正常工作,因为在流中,我们获得了用于MVC应用程序登录的html源代码

事实上,如果我们添加AllowAnonymous注释,我们就可以得到我们想要的Json流

但是我们不想允许匿名,我们需要一些保护。已尝试添加:

   Dim nc As New NetworkCredential("username", "password")
   request.Credentials = nc
就在触发
request.GetResponse
之前,但这不起作用(这可能完全不知道,但似乎值得一试)。当我说它不工作时,我的意思是我们返回到获取流中登录页面的html源代码


那么,如何允许winforms应用程序对其数据请求进行某种身份验证(这将起作用)?正如我所说,获取数据是可行的(AllowAnonymous证明了这一点)。

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


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

如果我使用ActionFilter为GetCategoryList操作添加注释,比如说,是否仍需要表单身份验证?这将如何改变其“侦听”winforms应用程序请求的意愿?您可以使用web.config中的标记或在controllers文件夹中创建另一个web.config来禁用控制器位置的FormsAuth,如此处所述()因此,它不会在这些路由中通过FormsAuth,或者您可以将Api控制器放在IIS中另一个网站/应用程序的另一个项目中。
   Dim nc As New NetworkCredential("username", "password")
   request.Credentials = nc