5

하나의 데이터베이스에 연결되는 어플리케이션이 있습니다.Asp.net은 런타임에 멤버쉽 설정을 덮어 씁니다. (asp.net mvc)

이제 앱이 여러 데이터베이스에 연결되어야합니다. 우리가하고 싶은 일은 동일한 응용 프로그램/도메인/호스트 이름/가상 디렉토리를 사용하여 사용자가 로그인 화면에서 연결할 "응용 프로그램/데이터베이스"를 선택할 수있는 옵션을 제공하는 것입니다.

각 데이터베이스에는 ASP 테이블/데이터/procs/etc뿐만 아니라 aspnet 회원/역할이 있습니다.

사용자가 사용자 이름/암호를 입력하고 응용 프로그램을 선택 (목록 선택) 할 때 선택한 응용 프로그램 데이터베이스에 대해 사용자의 유효성을 검사하려고합니다.

현재 회원 서비스의 데이터베이스 연결 문자열은 web.config에 저장됩니다. 로그인시 이것을 무시할 수있는 방법이 있습니까? 또한 "원활하게 작동하려면"기억 기능이 필요합니다. 사용자가 5 시간 내에 앱으로 돌아 왔을 때 어떻게 작동합니까?이 프로세스는 사용자와 애플리케이션을 식별하고 적절하게 로그인 할 수 있어야합니다.

답변

5

수있는 유일한 방법은 반사를 통해 CONN 문자열을 변경하는 것입니다

// Set private property of Membership provider.FieldInfo connectionStringField 
= GetType().BaseType.GetField("_sqlConnectionString", BindingFlags.Instance | BindingFlags.NonPublic); 
     connectionStringField.SetValue(this, connectionString); 

여기 찾았 http://forums.asp.net/p/997608/2209437.aspx

왜 그냥 자신의는 MembershipProvider를 구현하지? 매우 쉽게 할 수 있고 그 다음엔 무슨 일이 일어나고 있는지 완전히 제어 할 수 있습니다. 기본 제공 업체가 잘 작동하지 않는 또 다른 맞춤 시나리오를 생각해 낼 것입니다.

AFAIK는 사용자가 쿠키를 삭제하지 않는 한 설명하는 방식이 정확히 작동해야합니다.

관련 문제