하나의 웹 응용 프로그램에 .NET 멤버쉽 프로버더를 사용하여 여러 가상의 "응용 프로그램"을 갖는 것이 좋습니까?

StackOverflow https://stackoverflow.com/questions/399941

문제

포털 유사 ASP.NET 웹 애플리케이션을 처음부터 구축하고 싶었고 ASP.NET 멤버십 프로보더를 사용자 관리의 표준 방법으로보고있었습니다. sqlmembershipprovider에서 상속하는 공급자를 만들고 ValidateUser 메소드를 재정의했습니다.

        public override bool ValidateUser(string username, string password)
        {
            string temp = ApplicationName;
            List<MtscApp> allApps = GetAllApplications();
            foreach (MtscApp app in allApps)
            {
                ApplicationName = app.Name;
                Roles.ApplicationName = app.Name;
                if (base.ValidateUser(username, password))
                {
                    return true;
                }
            }
            ApplicationName = temp;
            Roles.ApplicationName = temp;
            return false;
        }

모든 응용 프로그램에 대한 입력 된 자격 증명을 검증하려고하는 반면 getAllApplicationSmethod ()는 ASPNET_APPLICATIONS 테이블에서 모든 응용 프로그램을 가져옵니다 (동일한 테이블에 응용 프로그램을 삽입하기위한 부분도 있습니다).

유효성 검사가 성공하면 응용 프로그램 이름은 멤버십 및 역할 제공 업체 모두에서 도약합니다. 그렇지 않으면 익명 사용자에 대한 사전 정의 된 응용 프로그램 인 기본값에 유지됩니다.

도움이 되었습니까?

해결책

예, 나는 여러 경우에 Somethihng를 비슷하게 해냈습니다. 유일한 차이점은 사용자가 나오는 URL을 기반으로 응용 프로그램 이름을 데이터베이스 테이블에서보고 해당 앱에 대해서만 검증한다는 것입니다. 테이블에는 URL과 ApplicationName의 두 필드가 있습니다. ApplicationName은 aspnet_applications.applicationName 필드와 동일한 applicationName입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top