0

我开发了一个 HTML/Jquery 移动应用程序,它通过从我使用 MVC3 编写的 REST Web 服务获取数据来工作。目前该服务是开放的,一切都很好。但是我必须实施某种身份验证来保护服务,所以我让用户通过移动应用程序注册。我打算做的是使用我的控制器或操作上的 [Authorize] 属性来实现 ASP.NET 成员资格等。我的问题是

  • 如何让通过 jquery 通信的客户端调用此安全服务
  • ASP.NET 成员资格是解决此问题的最佳方式,还是我可以实现其他类型的安全性

带有一些示例代码的教程或博客就足够了,一旦我做对了,我会很好地在这里发布解决方案。

感谢并随时提出您对此可能有的任何问题。

4

1 回答 1

0

看看这个 Q&A,它描述了为 Web API 创建一个自定义 AuthorizeAttribute,它还使用 http 基本身份验证对用户进行身份验证,并从 HTTP 标头中获取凭据。请注意,ASP.NET Web API (System.Web.Http.AuthorizeAttribute) 与 MVC 控制器 (System.Web.Mvc.AuthroizeAttribute) 有不同的 AuthorizeAttribute。他们有不同的行为。您不希望将对 Web API 的调用重定向到登录页面。

客户端的代码看起来像这样调用 REST Web 服务。

   getAuthorizationHeader = function (username, password) {
    var up = $.base64.encode(username + ":" + password);
    authType = "Basic " + up;
    return authType;
   },


    $.ajax({
        url: _url,
        data: _data,
        type: _type,
        beforeSend: function (xhr) {
            xhr.setRequestHeader("Authorization", getAuthorizationHeader(username, password));

        },
        success: ajaxSuccessHandler,
        error: ajaxErrHandler
    });

beforeSend 事件用于将凭据放入 HTTP 标头中。您仍然希望使用 HTTPS/SSL 来确保安全。仅对用户名/密码进行编码是不够的安全性。

于 2012-11-13T13:56:21.403 回答