Можно ли использовать .NET MembershipProvider для нескольких виртуальных «приложений» в одном веб-приложении? - PullRequest
1 голос
/ 30 декабря 2008

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

1 голос
/ 30 декабря 2008

Да, я делал нечто подобное несколько раз. Единственное отличие состоит в том, что я смотрю имя приложения в таблице базы данных на основе URL-адреса, с которого приходит пользователь, и проверяет только это приложение. Таблица состоит из двух полей: URL и ApplicationName. ApplicationName является тем же ApplicationName, что и поле aspnet_Applications.ApplicationName.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...