2014-12-09 6 views
0

У меня есть приложение 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); 
 
    } 
 
}

+0

Если вы являетесь веб-API и MVC5-приложением, пользуйтесь одной и той же логикой аутентификации, вы можете сгенерировать токен во время входа в приложение mvc5, а позже вы также можете использовать его с web api. – dotnetstep

ответ

0

Вы можете использовать OAuth аутентификацию, таким образом, который вы можете создать маркер доступа и может быть использована та же для дальнейших запросов к веб-API. Этот токен доступа можно сохранить в db или где-нибудь для использования в будущих запросах.