看看这个 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 来确保安全。仅对用户名/密码进行编码是不够的安全性。