2

MVC3 응용 프로그램은 인트라넷 프로젝트 템플릿 또는 인터넷 프로젝트 템플릿의 양식 인증을 사용할 때 Windows 인증을 허용합니다. 나는 사용하고 싶은 사이트를 가지고있다. 또한 사용자를 인증하는 인증 유형 (인증 또는 역할 없음, 신분 확인)을 사용하는 자체 사이트를 사용하는 기존 사이트가 있습니다. 인증을 위해 레거시 시스템의 데이터 외에도 각각의 기능을 사용해야 할 수도 있습니다. 이 때문에, 나는 나의 인증을 추상화하고 그것을 분리하는 방법을 결정하려고 노력하고있다. 어떤 종류의 의존성 삽입을 전적으로 구성에 기반하여 사용하고 싶기 때문에 동일한 사이트를 두 개의 다른 위치에 배치하고 구성 만 변경하여 인증 모델 (Windows Auth/Forms Auth/Custom Auth)을 전환 할 수 있습니다.MVC3 Loosly coupled 인증

현재 MVC3 템플릿 프로젝트를 포함한 모든 ASP.NET 응용 프로그램은 사용 된 인증 유형과 매우 밀접하게 연결되어 있습니다.

이 상자의 외부에서 너무 멀리 생각하고 있습니까?

이것이 가능한가, 아니면 이러한 단단한 결합이 필요한가?

UPDATE 나는 내가 다른 사람을 위해 필요로하는 폼 인증 대, 일부 사용자를 위해 사용해야하는 기존의 레거시 인증 사이가 진짜 문제. LogIn 양식이 사용되지 않아 Windows 대 Forms 인증이 실제로 문제가되지 않습니다. 그러나 사용자 지정 인증 및 양식 인증을 고려하십시오. LogIn 폼은 FormsAuthentication, 특히 System.Web.Security와 밀접하게 결합됩니다. (Membership.ValidateUser, FormsAuthentication.SetAuthCookie 등).

FormsAuthentication 및 Membership을 사용하는 대신 내 AccountController에 사용할 인증을 삽입하고 싶습니다.

지금까지 내 문제가 무엇보다 중요합니까?

답변

1

사실 너무 강하게 결합되어 있지 않습니다. 템플릿은 단지 당신을 신속하게 기동시키고 실천하려고합니다.

ASP.NET 멤버십은 양식 및 도메인 인증을 모두 지원합니다. 양식 인증에 대해 구성된 사이트, 예를 들어, 당신이 좋아하는 Web.config에 줄을 볼 수 있습니다에서

: 당신은 변경할 수 있습니다

<authentication mode="Forms"> 

것과 : 유일한 차이점이 아니다

<authentication mode="Windows"> 

(예를 들어, Windows 인증을 사용하면 에 로그인 페이지가이 필요하지 않지만 가장 중요합니다. ASP.NET Membership API를 기반으로 코드를 작성하고해야 할 때 특히 Forms 인증 만 대상으로합니다.

+0

사이트를 로컬에서 사용할 때 Windows 인증을 사용 하겠지만 네트워크에 연결되어 있지 않은 사용자는 사이트에 액세스해야 할 수 있습니다. 이 경우 양식 인증을 사용하여 로그인해야합니다. 그러나 고객은 로그인해야하지만 aspnet 양식 인증 테이블,보기 등을 사용하지 않는 기존 인증 시스템을 사용합니다. –

1

나는 Craig의 대답에 동의한다. 추가해야 할 유일한 점은 느슨하게 결합 된 web.config에서 변경할 수있는 모든 것을 고려한다는 것입니다. 이유는 MVC 응용 프로그램에 대한 배포 패키지를 만들 때 web.config transforms을 적용 할 수 있기 때문입니다.

우리는 DI/IoC를위한 유니티를 사용하고 또한 유니티를 사용하여 Web.config의에 주입 종속성을 지정할 수 있습니다. 한 종류의 인증을 위해 앱을 구성하는 Web.Auth1.config와 다른 종류의 인증을 위해 구성하는 Web.Auth2.config를 작성하면됩니다.그런 다음 배포 할 때 대상을 선택하면 VS가 올바른 구성을 작성합니다.

배포에 사용되는 인증 유형을 소스 코드가 알고 있어야하는 경우 배포 중에 web.config 변형을 사용하여 변경할 수있는 web.config appSetting을 사용하여 소스 코드를 알 수 있습니다.