Как установить роль по умолчанию для нового пользователя с помощью проверки подлинности Windows с SqlRoleProvider?

голоса
1

У меня есть приложение, которое использует проверку подлинности Windows и SqlRoleProvider для аутентификации пользователей и управления ролями соответственно. Он работает отлично с моими тестовыми пользователями, которые я добавил в базу данных, как по умолчанию. Приложение требует пользователей для входа (с использованием учетных данных Windows), а затем быть в состоянии использовать это внутреннее применение в качестве основного «пользователя». Если пользователь должен быть добавлен к роли высокого уровня, администратор будет нести ответственность за это после первого входа в систему.

С учетом сказанного, как бы я добавить пользователя к роли по умолчанию, когда они впервые войти? Логически, я знаю, что я должен был бы назвать Roles.IsUserInRole (), а затем добавить их, если они не являются; Однако, где бы я это сделать? У меня возникают трудности при определении местоположения, какое событие в Global.asax для использования.

благодаря

EDIT: Для того, чтобы расширить сценарий немного, я не использую полную систему поставщика членства в связи с требованиями по написанию новых поставщиков , чтобы строка подключения будет храниться за пределами web.config. Я не использую любую форму регистрации или страницу входа и позволить встроенной проверке подлинности Windows в IIS обрабатывать аспекты аутентификации , а мое расширение SqlRoleProvider управляет ролями пользователей. Система работает отлично для пользователей , которые у меня есть роли установки через жесткие закодированные тесты. Я просто ищу способ для добавления новых пользователей (которые будут проходить проверку подлинности IIS) должны быть немедленно добавлены в «Users» роль по умолчанию. Я думаю , что я нашел его; Однако, я в настоящее время изучают способы , чтобы сделать это не срабатывает при каждом запросе по соображениям производительности.

Задан 09/12/2008 в 21:13
источник пользователем
На других языках...                            


3 ответов

голоса
1

Я был в состоянии найти решение после рытья и играть вокруг немного больше. Я добавил следующий код в свой файл Global.asax и его выполнение, что я надеялся.

protected void WindowsAuthentication_OnAuthenticate(object sender, WindowsAuthenticationEventArgs e)
{
    if (!Roles.IsUserInRole(e.Identity.Name, "Users"))
    {
        Roles.AddUsersToRole(new string[] { e.Identity.Name }, "Users");
    }
}

Я обеспокоен, поскольку этот код пожаров с каждым запросом страницы. Есть ли лучший способ ограничить, когда это происходит? Должен ли я просто добавить этот код на целевой странице в page_load случай вместо Global.asax?

Ответил 09/12/2008 в 21:51
источник пользователем

голоса
0

Почему бы не поставить его, когда Войти или зарегистрироваться?

Когда Логин, обработать это событие и поместить его в. Проверьте каждый раз они логин.

Ответил 09/12/2008 в 22:08
источник пользователем

голоса
0

Я хотел бы добавить роль по умолчанию для пользователя непосредственно после того, как пользователь был неправдоподобным.

Что-то вроде такого:

user = Membership.GetUser()
if (user != null)
{
  // default role 
  string[] defaultRoles = {"MyRole"};

  AddUsersToRoles(user, defaultRoles); 

}
Ответил 09/12/2008 в 21:23
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more