Можно ли использовать .NET MembershipProvider для размещения нескольких виртуальных “приложений” в одном веб-приложении?

StackOverflow https://stackoverflow.com/questions/399941

Вопрос

Я хочу создать порталоподобное 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top