ASP.NET: авторизация действия MVC с токеном на предъявителя через вызовы AJAX - PullRequest
0 голосов
/ 06 июня 2018

это мой первый пост в SO.

У меня есть один проект ASP.NET, он использует Web API в бэкэнде с аутентификацией токена на предъявителя, который прекрасно работает с использованием PostMan.Тем не менее, я испытываю трудности во внешнем интерфейсе (SPA использует только jQuery).

Я хочу иметь возможность вызывать действие MVC с подключенным токеном носителя и успешно проходить аутентификацию с помощью Identity User, поэтому яможет иметь следующие преимущества:

-Call MVC Action с атрибутом [Authorize].Я хочу обрабатывать аутентификацию и авторизацию на сервере, а не делать это с помощью JavaScript.Он также будет обрабатывать авторизацию ролей.

- Вызовите действие MVC, которое будет создавать экземпляр контроллера Api и вызывать действие Api, создавать ViewModel из ответа действий Api и генерировать частичное представление.Это не позволит jQuery вставлять данные в DOM, так как действие MVC вернет частичное представление с данными.

-Используйте частичные виды бритвы в полном объеме с моделями, переданными из действия MVC.Это также позволит мне использовать условия в частичном представлении, чтобы я мог показывать дополнительный контент, если, например, пользователь с ролью администратора запрашивает его.

Я читал, что MVC должен проходить аутентификацию с использованием cookie-аутентификации, как я мог быдостичь этого?My Log In Form запрашивает токен на предъявителя напрямую через AJAX при отправке.Заранее спасибо.

GitHub с исходным кодом: https://github.com/RolandoMalena/jogtrackr/tree/master/jogtrackr/Web/JogTrackr

Функция JavaScript для получения HTML из заданной конечной точки:

function getHTML(endPoint, callback) {
$.ajax({
    //headers: { Authorization: 'Bearer ' + sessionStorage.getItem('accessToken') },
    datatype: "text/html",
    type: "GET",
    url: endPoint,
    cache: true,
    success: function (result) {
        callback(result);
    }
});

Пример вызова вышеприведенногоfunction:

getHTML('/Entries/GetWeeklyReport', function (result) {
                content.find("#loading").before(result);
            });

Пример MVC Controller, обратите внимание, что I GetUserId () возвращает null:

public PartialViewResult GetWeeklyReport()
    {
        //this returns null
        var temp = User.Identity.GetUserId();
        return PartialView("_WeeklyReport");
    }
...