Я хочу создать похожее на портал веб-приложение asp.net с нуля, и рассматривал asp.net MembershipProvider в качестве стандартного способа управления пользователями. Я создал своего провайдера, унаследованного от 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 (у меня также есть часть для вставки приложений в одну таблицу).
Если проверка прошла успешно, то имя приложения указывается как у поставщиков членства, так и у поставщиков ролей, в противном случае оно остается по умолчанию, которое является предопределенным приложением для анонимных пользователей.