0

我有一个 MVC4 C# 应用程序,我想允许客户端通过代码访问(没有浏览器或视图)。客户端将发送一个用户 ID,该用户 ID 将用于查找记录并返回三个字段。传入和传出数据都是敏感信息,因此我需要一个安全的解决方案。该应用程序正在使用 SSL (https) 的站点上运行,如果我按照两个答案的建议使用 JSON 解决方案,这会保护我免受 JSON 劫持吗?

public ActionResult InAction(string id)
{ 
  // code to retrieve record and return three fields field1, field2, field3

  return (what would go here?)
}

我什至可以使用控制器动作来处理这个问题吗?我是否需要一个完整的 Web 服务来执行此操作,如果需要,任何指向优秀 MVC 教程的链接都会有所帮助?

客户端在 ASP(webforms)中工作,并且正在谈论一个带有键值对的响应者页面,我将如何在 MVC 中做同样的事情。

非常感谢任何让我前进的帮助。

谢谢

更新:我已将 Brett 的 JSON 建议标记为答案。我正在返回一个字符串(不是数组)并且整个事务是通过 SSL 连接进行的,所以我相信 JSON 劫持的可能性不是问题。

  string response = field1 + "," + field2 + "," + field3;
  return Json(response), JsonRequestBehavior.AllowGet; }

如果我错了,请告诉我。

4

2 回答 2

2

正如 nikeaa 提到的,只需在控制器中创建一个返回 JsonResult 的操作

public JsonResult InAction(string id)
{
    // get some object from repository
    var repository = new ObjectRepository();
    var returnObj = repository.GetObject(id);
    return Json(returnObj, JsonRequestBehavior.AllowGet);
}

您需要指定 JsonRequestBehaviour.AllowGet 来覆盖默认的 .DenyGet。但是,这会在使用 GET 请求返回 JSON 时打开一个安全漏洞。 有关详细信息,请参阅此 StackOverflow 答案。

于 2013-02-11T23:04:50.140 回答
0

这取决于您想要返回数据的格式。例如,如果您想要以 JSON 格式返回数据,您可以使用以下内容:

return (Json(userResultModel));

您可能还希望将方法的返回类型更改为 JsonResult。

于 2013-02-11T22:51:30.480 回答