【问题标题】:Send an Authenticated Request发送经过身份验证的请求
【发布时间】:2017-06-12 04:22:38
【问题描述】:

我有一个使用 asp.net 身份保护的 MVC 项目:

这是我的登录功能:

self.login = function () {
    event.preventDefault();
    if (!$('#formLogin').valid()) {
        return false;
    }
    var loginData = {
        grant_type: 'password',
        username: self.userName(),
        password: self.password()
    };
    $.ajax({
        type: 'POST',
        url: '/API/Token',
        data: loginData
    }).done(function (data) {
        // Cache the access token in session storage.
        sessionStorage.setItem(tokenKey, data.access_token);
        self.authenticate();
        //change status of Login button to Logout
        self.redirect('Users');
    }).fail(showError);
}

self.authenticate = function () {
    self.token = sessionStorage.getItem(tokenKey);
    var headers = {};
    console.log(self.token);
    if (self.token) {
        headers.Authorization = 'Bearer ' + self.token;
    }
    $.ajaxSetup({
        headers: headers
    });
}

效果很好,我成功获得了token,并且标头设置正确。

问题是当我尝试发送请求时——例如:

self.getUsers = function () {
    $.get("/API/Users/GetUsers/");
}

我从服务器收到 401 错误:

"message": "此请求的授权已被拒绝。"

我做错了什么?

【问题讨论】:

    标签: ajax asp.net-web-api http-headers asp.net-identity


    【解决方案1】:

    根据jQuery.ajaxofficial documentation,用这个来设置每个请求的自定义头:

    $.ajaxSetup({
        beforeSend: function(xhr) {
            xhr.setRequestHeader('Authorization', '...');
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2019-03-29
      • 1970-01-01
      • 2016-05-01
      • 2011-11-01
      • 1970-01-01
      • 2021-05-23
      • 1970-01-01
      • 1970-01-01
      • 2015-07-16
      相关资源
      最近更新 更多