ASP.NET: авторизация действия MVC с токеном-носителем через вызовы AJAX

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

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

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

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

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

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

Я читал, что MVC должен аутентифицироваться с использованием аутентификации cookie, как мне этого добиться? Моя форма входа в систему запрашивает токен на предъявителя напрямую через 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);
    }
});

Пример вызова указанной выше функции:

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

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

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

Не могли бы вы предоставить код контроллера и javascript, на котором выполняется запрос.

brass monkey 06.06.2018 16:52

@LazerBass Done, также добавил ссылку на GitHub.

RolandoMalena 06.06.2018 17:17
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
384
0

Другие вопросы по теме