это мой первый пост в 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");
}