发送经过身份验证的请求

时间:2017-06-11 15:34:05

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

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

这是我的登录功能:

         x : {
           type: 'category',
           categories:  ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
           tick: {
                multiline:false,
                culling: {
                    max: 1
                },
            },
        },
        ... etc etc...
    },

工作正常,我成功获得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

我从服务器收到401错误:

  

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

我做错了什么?

1 个答案:

答案 0 :(得分:0)

根据jQuery.ajax的{​​{3}},使用此功能设置每个请求的自定义标头:

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