하나의 웹 응용 프로그램에 .NET 멤버쉽 프로버더를 사용하여 여러 가상의 "응용 프로그램"을 갖는 것이 좋습니까?
-
29-08-2019 - |
문제
포털 유사 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입니다.
제휴하지 않습니다 StackOverflow