당신은 기본
webpages_
접두사를 변경하거나 테이블에 앉아 (AFAIK) 데이터베이스 스키마 할 수 없기 때문에,이 문제를 해결해야 할 것입니다.
단순 멤버 자격 공급자가 될 수 있도록 설계되었다
고도의 사용자 정의가 가능하지만 상자에서 꺼내 사용하면 자신의 공급자를 사용하는 것보다 많은 작업을 줄일 수 있습니다. 그러므로 더 나은 옵션은 그것을 사용하는 방법을 찾는 것이라고 가정 해 봅시다. 솔루션은 다음 중 하나입니다.
- 두 개의 데이터베이스; 또는
- 하나의 데이터베이스 만 사용하는 경우 역할을 사용하여 사용자를 분리 할 수 있습니다.
역할을 사용할 때의 작은 단점은 UserProfile
클래스에서 조금 더 열심히해야한다는 것입니다. 일반적으로이 클래스에 사용자 속성을 추가합니다. 두 사이트가 다른 사용자 속성을 사용하는 경우 Shared Primary Key Associations과 같은 것을 사용하여 테이블을 가로로 분할해야합니다.
제 견해로 이것은 분리 된 데이터베이스에서 두 개의 분리 된 세트를 유지하는 것보다 실제로 작동하지 않을 것입니다. 또는 동일한 데이터베이스에서도 마찬가지입니다. 어쨌든 "LastLoginAt"와 같은 공유 속성은 UserProfile
에 포함될 수 있으므로 (따라서 두 사이트 모두에 공통 라이브러리를 개발할 수 있음) "InternalExtensionNumber"와 같은 사이트 별 속성은 회사 사용자 별 파티션 테이블로 이동할 수 있습니다.
단점이란? 누군가가 사용자 역할 테이블에 액세스하면 개인 사용자에게 개인 사이트 액세스 권한을 할당 할 수 있습니다. 즉, 누군가가 사용자 역할 표에서 해당 작업을 수행하기 위해 액세스 권한을 얻는다면 이미 손상되었을 가능성이 있으며 더 나빠질 수는 없습니다.
예 :
사이트 1에 등록하는 모든 사용자는 역할 "PublicUser"및 사이트 2가 다음에 시행하는 것이 어렵지 않을 것 역할 "관리 사용자"를 주어로 등록하는 모든 사용자를 지정하면 당신이 회사의 응용 프로그램에있는 모든 컨트롤러가 필요한 권한을 장식 할 수 예를 들어 특정 사이트 내에서 필수 역할 :
[Authorize(Roles = "PrivateUser")]
또는 사이트의 역할에 대한 사이트 전체에 권한을 적용 할 수 있습니다. 당신이 당신의 자신을 만들고 그것을 사용하여 권한 부여 속성을 확장 할 수 당신이 원하는 경우,이보다 더 갈
// Add this to global.asax.cs to enforce authorization on all controllers.
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
// Add a setting to the web.config to specify the site role,
// and then you can use the same value consistently when
// registering users and assigning them a role.
string siteRole = System.Configuration.ConfigurationManager.AppSettings["SiteRole"];
filters.Add(new System.Web.Mvc.AuthorizeAttribute() { Roles = siteRole });
}
이렇게하려면 공용 메소드에 액세스 할 수 있도록하기 위해 AllowAnonymousAttribute
를 사용하여 다음 AuthorizeAttribute
사용 register the attribute as a site filter, 수 사이트 또는 컨트롤러 수준에서 적절하게 조정할 수 있습니다.
글쎄, 일부 파고 후에 테이블 이름이 코드에서 고정되어 있음을 발견했습니다. 소스 코드를 사용할 수 있으며 새 버전으로 mod하고 다시 컴파일 할 수 있습니다. 어쩌면 그렇게 할 시간이있을 때 나는 할 것입니다. 누구나 잠시 동안 제안이 있습니까? – glerler