Токен на предъявителя в заголовке запроса ajax не определен. - PullRequest
0 голосов
/ 07 ноября 2018

Здесь я выполняю вызов метода контроллера GetAccessTokenAsync, он возвращает результат JSON, содержащий маркер доступа от auth0

function GetAccessToken() {
$.ajax({
    type: "GET",
    url: "https://localhost:44301/Account/GetAccessTokenAsync",
    contentType: 'json',
    dataType: 'json',
    success: function (data) {
        JSON.stringify(data)
    }
});}

Вот код метода контроллера

 public async Task<JsonResult> GetAccessTokenAsync()
    {
        var accessToken = await HttpContext.GetTokenAsync("access_token");

        return Json(accessToken);
    }

Здесь я пытаюсь получить значение из вышеупомянутого вызова ajax в заголовок запроса, но он продолжает возвращаться неопределенным. Однако этот вызов содержит правильный токен доступа, он просто не устанавливает его правильно

function GetAll() {
var accessToken = GetAccessToken();
$.ajax({
    type: "GET",
    contentType: 'json',
    dataType: 'json',
    crossDomain: false,
    url: "https://localhost:44348/api/v1/trialuser/1",
    beforeSend: function (request) {
        request.setRequestHeader("Authorization", "Bearer " + accessToken);
        request.setRequestHeader("Access-Control-Allow-Origin", "https://localhost:44301");
    },
    success: function (data) {
        $.each(data, function (key, item) {
            $('<tr>', { html: formatItem(item) }).appendTo($("#getAllTable"));
            $('#show').attr("disabled", true)
        })
    },

});}

У кого-нибудь еще есть эта проблема? и мои знания о вызовах jquery и ajax невелики, поэтому любые примеры приветствуются

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Измените метод GetAccessToken, чтобы получить ответ.

function GetAccessToken() {
$.ajax({
    type: "GET",
    url: "https://localhost:44301/Account/GetAccessTokenAsync",
    contentType: 'json',
    dataType: 'json',
    success: function (data) {
        return JSON.stringify(data)
    }
});}
0 голосов
/ 07 ноября 2018

Ваша функция GetAccessToken () ничего не возвращает и не устанавливает глобальную переменную. Итак, ваш вызов функции из функции GetAll (), где вы устанавливаете accessToken = GetAccessToken (), ничего не устанавливает.

Либо возвращайте что-либо в событии успеха, либо задайте значение переменной, чтобы обе функции имели доступ к области действия.

...