我开发了一个HTML / Jquery Mobile应用程序,它通过从我使用MVC3编写的REST Web服务获取数据来工作。目前,该服务是开放的,一切都与世界相得益彰。但是,我必须实施某种身份验证来保护服务,以便我通过移动应用程序注册用户。我打算做的是使用我的Controller或Actions上的[Authorize]属性来实现ASP.NET成员资格等。 我的问题是
带有一些示例代码的教程或博客就足够了,一旦我做对了,我就会在这里发布解决方案。
感谢您随时提出任何有关此事的问题。
答案 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来确保安全。仅编码用户名/密码是不够安全的。