2014-12-09 6 views
0

MVC 5 응용 프로그램에서 폼 인증 (기본 MVC 5 프로젝트 템플릿과 동일)을 사용하고 있습니다. 동일한 프로젝트에는 응용 프로그램에서 사용하는 일부 API를 제공하는 WebAPI 2.2 컨트롤러가 포함되어 있습니다.로깅 후 mvc 응용 프로그램에서 WebAPI 2.2에 액세스

무기명 토큰을 사용하여 API에 대한 두 가지 유형의 액세스 권한을 갖고 싶습니다. API는 javascript를 통해 호출됩니다. http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api을 사용하여 코드를 추가했습니다.

예제 코드는 별도의 API를 호출하고 사용자 이름과 암호를 제공하여 토큰을 얻습니다. 내가 달성하고자하는 것은 사용자가 MVC 애플리케이션에 성공적으로 로그인하고 javascript에서 다른 호출을 수행하지 않고 Bearer Token을 반환하는 것입니다.

이것이 가능합니까?

업데이트 : 헤더를 사용하여 계정 컨트롤러의 로그인 작업에서 토큰을 반환하고 싶습니다. 그러나 아마 리다이렉션 때문에 헤더가 버려집니다.

+0

웹 API 및 MVC5 응용 프로그램이 동일한 인증 로직을 공유하면 mvc5 응용 프로그램에서 로그인 할 때 토큰을 생성 할 수 있으며 나중에 웹 API에서도 사용할 수 있습니다. – dotnetstep

답변

0

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에 추가 요청에 대해 동일한 사용할 수있는함으로써의 Oauth 인증을 사용할 수 있습니다. 이 액세스 토큰은 향후 요청에서 사용하기 위해 db 또는 어딘가에 저장할 수 있습니다.