我有一个MVC 3 REST API,它有一个简单的控制器:ApiController
。有一个在ApiController
方法Foo
,需要一些字符串信息,并返回JSON结果:Javascript请求JSON导致ASP.NET MVC 3使用Forms Authentication
public class ApiController : Controller
{
[HttpPost]
public JsonResult Foo(string input)
{
...
}
}
我想有一些用户输入的数据jQuery的方法调用Foo和显示结果。
这里的问题是我想检查用户是否被允许访问Foo。在ASP.NET MVC 3中,最好的方法是什么?我认为答案是使用SSL和基本身份验证,但我不知道会是什么样子。另外,我是否必须推出我自己的密码哈希/盐渍或有一些方法来使用表单身份验证?
编辑:请注意,我正在尝试创建第三方开发人员可以使用的API。例如,如果有人编写了用于扫描Gmail的Replive风格浏览器插件,则将文本发送到Foo,并将其显示在浏览器中。
另外,我相信只是使用Forms Authentication将以纯文本发送用户名/密码信息,对吧?我不知道如何实施SSL来防止这种情况。
感谢Darin,我不知道RequireHttps。我仍然有一个问题:如何让第三方开发人员使用我的API进行构建。我想要一个无状态的API,他们每次打电话时基本上都会提交用户名/密码。例如,如果某些Rails开发人员想要构建一个调用Foo的Web应用程序,那么它不应该成为问题,他们只需使用适当的用户名/密码为其开发人员帐户调用该URL即可。类似于Facebook如何使用开发人员密钥,我想。 – 2011-04-09 19:55:27
@Wesley Tansey,在这种情况下,您可以编写一个自定义'Authorize'属性,在其中验证客户端传递的某些令牌的有效性。它可能是一个自定义的HTTP头或其他东西。可能是用户名/密码,或者您可以向客户端发送一些私钥,这些私钥是他们发送每个请求所需的私钥,您可以在重写的'AuthorizeCore'方法中解密并验证其有效性。 – 2011-04-09 21:31:29
谢谢。这就是我的想法。看起来像.NET这样的常见任务应该更直接。现在几乎每个构建Web应用程序的人都不需要开发人员API吗? – 2011-04-09 22:58:26