如何从jquerymobile使用安全的REST服务

时间:2012-11-13 12:11:04

标签: asp.net asp.net-mvc-3 rest jquery-mobile forms-authentication

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

  • 如何让通过jquery进行通信的客户端调用此安全服务
  • ASP.NET成员资格是最好的解决方法吗?还是我可以实现的其他类型的安全性

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

感谢您随时提出任何有关此事的问题。

1 个答案:

答案 0 :(得分:0)

查看this Q&A,其中介绍了为Web API创建自定义AuthorizeAttribute,该API还使用http基本身份验证对用户进行身份验证,并从HTTP标头中获取凭据。请注意,ASP.NET Web API(System.Web.Http.AuthorizeAttribute)有一个不同的AuthorizeAttribute,而不是MVC控制器(System.Web.Mvc.AuthroizeAttribute)。他们有不同的行为。您不希望调用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来确保安全。仅编码用户名/密码是不够安全的。