Можно ли использовать.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.

Другие вопросы по тегам