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