1

我有一个建立在 .NET MVC4 之上的 Backbone/RequireJS 应用程序。我正在使用表单身份验证来针对我们的后端数据存储对用户进行身份验证,这很好用。

我们的服务层是一个 .NET Web Api 项目(RESTful API),并且使用令牌化方法进行身份验证(初始请求包括基本身份验证标头。如果身份验证成功,则响应负载包括身份验证令牌。后续请求传递令牌)。

我不确定现在如何针对我们的服务层进行身份验证。我确定我必须传递 auth 标头,但不确定如何生成令牌,因为我的 JS 中没有用户名/密码。

我应该在这里完全绕过 Forms auth,并简单地通过 SSL 发出 ajax 请求吗?我也可以 POST 到 /Account/Login 操作,并使用 Membership Provider 来验证凭据。如果成功,我可以为初始请求添加 Auth 标头并为后续请求使用身份验证令牌。

在此处添加身份验证标头/自定义令牌的示例:

$.ajaxSetup({
    'beforeSend': function (xhr) {
        if($.cookie("AuthToken")) {
            xhr.setRequestHeader("CustomTokenHeader", $.cookie("AuthToken"));
        } else {
            var token = methodToBase64EncodeUsernamePassword(username, password);
            xhr.setRequestHeader("Authentication", "Basic " + token);
        }

    }
});
4

1 回答 1

1

看看这个解决方案,它基于我似乎无法再次找到的截屏视频。如果我能找到它,我会更新答案。不过,您应该能够轻松地遵循解决方案。您正在寻找的是 PerRouteMHownershipSample。我相信最佳实践是“在这里完全绕过表单身份验证,并简单地通过 SSL 发出 ajax 请求”。您想要保护的任何 api 路由都将被过滤,然后需要从您的应用程序传递一个令牌并在服务器上对其进行解码。我个人不会考虑使用表单身份验证来保护您的 api。

于 2013-01-04T13:13:49.460 回答