Можно ли использовать.NET MembershipProvider для нескольких виртуальных "приложений" в одном веб-приложении?
Я хочу с нуля создать веб-приложение 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 (у меня также есть часть для вставки приложений в одну и ту же таблицу).
Если проверка прошла успешно, то имя приложения указывается как у поставщиков членства, так и у поставщиков ролей, в противном случае оно остается по умолчанию, которое является предопределенным приложением для анонимных пользователей.
1 ответ
Да, я делал нечто подобное несколько раз. Единственное отличие состоит в том, что я смотрю имя приложения в таблице базы данных на основе URL-адреса, с которого входит пользователь, и проверяет только это приложение. В таблице есть два поля: URL и ApplicationName. ApplicationName является тем же ApplicationName, что и поле aspnet_Applications.ApplicationName.