2

VS2013 RTW MVC 템플릿 ("개별 사용자 계정"용)에서 새로운 ASP.NET ID 제공 기능을 사용 해왔고 훌륭하게 작동합니다. 데이터 직렬화 방식을 사용자 정의하면서 Facebook 로그인을 통합 할 수있었습니다 .VS2013 (RTW) : SPA 템플릿 대 MVC5 템플릿의 인증 차이점은 무엇입니까?

모두 좋았지 만 MVA 대신 새로운 SPA 앱을 만들면 인증 이야기가 매우 다른 것처럼 보였습니다. 스파 템플릿에서

: 다음 MVC 템플릿에서

public AccountController() 
     : this(Startup.UserManagerFactory(), Startup.OAuthOptions.AccessTokenFormat) 
    { 
    } 

    public AccountController(UserManager<IdentityUser> userManager, 
     ISecureDataFormat<AuthenticationTicket> accessTokenFormat) 
    { 
     UserManager = userManager; 
     AccessTokenFormat = accessTokenFormat; 
    } 

: 예를 들어

public AccountController() 
     : this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()))) 
    { 
    } 

    public AccountController(UserManager<ApplicationUser> userManager) 
    { 
     UserManager = userManager; 
    } 

이 계정 컨트롤러의 생성자에서 단지 차이가있다. 다른 많은 차이점이 많이 있습니다. MVC 버전을 사용하면 ApplicationDBContext에서 내 자신의 컨텍스트 클래스를 쉽게 파생시킬 수 있었고이를 사용하여 인증 테이블과 함께 내 테이블을 저장할 수있었습니다. SPA 템플릿의 데이터 저장소를 사용자 지정하는 방법을 알 수 없습니다.

또한, SPA 템플릿을 포함하고이 클래스를 사용 공용 클래스 ApplicationOAuthProvider : OAuthAuthorizationServerProvider

MVC의 템플릿을 정의하지 않는 (또는 사용)이 클래스를.

왜 MVC 템플릿과 SPA 템플릿간에 차이가 있는지 이해할 수 없습니다.

누구나 인증이 이렇게 두 가지 템플릿에서 다르게 처리되는 이유에 대한 지침을 줄 수 있습니까? 처음부터 프로젝트를 시작하면이 두 프로젝트를 따라갈 수있는 기본 경로가 있습니까? ...

감사합니다 (그것은 MVC 템플릿의 코드 특히 데이터가 사용자 정의 EF 컨텍스트 클래스를 정의하여 저장되는 방법을 사용자 정의의 측면에서 가장 좋습니다.처럼 보인다)

-Ben

+0

매우 이상합니다. 내가 아는 바로는 'OWin.Security'는 ASP.Net에서 Auth를 통합하기위한 것이 었습니다. 적어도 백 엔드. 프런트 엔드에서는 서로 다르다는 것을 알 수 있습니다. MVC5는'AccountController' /'AccountView'를 사용하여 Auth를 처리합니다. 그러나 SPA의 전체 POINT는 단일 페이지 (단일 컨트롤러 /보기) 만 가질 수 있다는 것입니다. 그래서 auth 구성 요소를 별도의 컨트롤러에 구현하는 대신 SPA 컨트롤러에 주입해야한다고 생각합니다. 단지 두 센트입니다. – Aron

답변

4

MVC 및 SPA 프로젝트 템플릿을 Controller vs ApiController 구현 샘플로 사용하십시오. 뿐만 아니라 CookieAuthentication 및 oAuthAuthentication.

  • MVC는 첫 번째 요청뿐만 아니라 모든 후속 요청 (정의 된 동작 메서드 요청 포함)에서 컨트롤러를 사용합니다.
  • SPA는 SPA에 대한 첫 번째 요청에서 Controller를 사용하고 다른 모든 상호 작용은 ApiController에서 처리합니다.
  • MVC는 쿠키 인증을 사용합니다.
  • SPA는 oAuth 인증을 사용합니다.

이제 실제 앱에서는 두 가지를 혼합해야합니다. 이걸 설명하면 IdentityModel.cs (ApplicationDBContext)를 사용할 수 있으며 맞춤 SPA에서 MVC 프로젝트의 사용자 정의 된 복사본도 사용할 수 있습니다.

oAuth 구현시 토큰은 GrantResourceOwnerCredentials 방법으로 ApplicationOAuthProvider에서 발행됩니다. 사용자 확인은 기본적으로 Identity 프레임 워크의 동일한 데이터베이스를 사용합니다. 또한, oAuth는 ApiController에서 인증 검사를 제공합니다. 샘플 구현에서 oAuth의 ResourceOwner 플로우는 사용자의 사용자 이름과 비밀번호가 검증 된 곳에서 제공됩니다.

내 견해로는 템플릿이 시작점의 예입니다.

+0

믹스 MVC와 SPA 앱이 인증과 함께 어떻게 보여줄 수있는 샘플이 있습니까? 나는 SPA로 그것의 일부로 작동하는 전통적인 mvc 응용 프로그램을 얻으려고하지만 동시에 인증 작업을 모두 얻을 수 없습니다, 당신이 내게 방향을 가리 키도록 도와 주시겠습니까? –

+0

그런 예는 없습니다. SPA 템플릿은 두 시나리오 모두에서 많은 사용자 정의를 처리 할 수있는 쉬운 방법이지만 – jd4u

1

사용자의 모델을 변경하는 것에 대한 모든 게시물을 처음 보았을 때 SPA 템플릿에서 모델을 찾을 수 없었던 것과 똑같은 것을 알았습니다. 물론, @ jd4u와의 차이점은 Controller와 ApiController를 기반으로한다는 점입니다.

그래서 SPA 솔루션이 MVC 템플릿과 동일한 ID 모델 확장을 사용하도록하려면 무엇이 필요한지 알아보기로 결정했습니다. 나는 통과 한 과정을 거치며 post을 만들었습니다. 하단에는 GitHub에서 코드를 다운로드 할 수있는 링크가 있습니다.

+0

읽기를 고대합니다. 감사! – BenjiFB

+0

omeszar,이 답변에 블로그 게시물의 관련 부분을 추가해주십시오. 귀하의 블로그가 얼마 동안 도달 할 수 없다면 당신의 대답은 쓸모 없을 것입니다. –