У меня есть приложение MVC 5, использующее проверку подлинности по формату (то же, что и в шаблоне проекта MVC 5 по умолчанию). Тот же проект содержит контроллер WebAPI 2.2, который предоставляет некоторые API, которые использует приложение.Доступ к WebAPI 2.2 из приложения mvc после входа в систему
Я хотел бы иметь два типа доступа к API с помощью токенов-носителей. API будет вызываться через javascript. Я добавил код для этого, используя http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api.
Проблема заключается в том, что код примера получает токен, делая вызов для разделения API и предоставления имени пользователя и пароля. То, что я хотел бы достичь, - вернуть токен-носитель после того, как пользователь успешно войдет в приложение MVC, а не выполнил другой вызов в javascript.
Возможно ли это?
Обновление: Я хочу вернуть токен в действие входа в систему контроллера аккаунта, используя заголовок. Однако, вероятно, из-за перенаправления заголовок отбрасывается.
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
}
Если вы являетесь веб-API и MVC5-приложением, пользуйтесь одной и той же логикой аутентификации, вы можете сгенерировать токен во время входа в приложение mvc5, а позже вы также можете использовать его с web api. – dotnetstep