2009-08-20 2 views
1

Я уже давно работаю с именем .net, но мой последний проект требует не очень большой кодировки..net Членство запретить логин

У меня есть одна база данных, которая содержит таблицы и т. Д. Для членства в сети .net. Есть 4 роли:

  • администратора
  • BasicAdmin
  • PowerAdmin
  • Член

Теперь верхняя 3 могут войти в систему администратора, но я хочу, чтобы запретить вход для тех, кто в роли Member, я добавил в webconfig следующее:

<authorization> 
    <deny roles="Member"/> 
    <deny users="?"/> 
</authorization> 

это работает, в некоторой степени. Он перенаправляет пользователя, который находится в роли «Участник», на страницу входа в систему, но он не приводит к ошибке входа в систему, как вы могли бы получить, когда вы не зарегистрированы, и введите неправильные данные.

Участники могут войти в зону участников сайта, которая будет для аргументов ради ограничений админам.

Кто-нибудь знает, где я ошибаюсь, я что-то упустил или это невозможно?

Спасибо,

ответ

1

Ваши пользователи могут войти и содержанию членов, но затем перенаправляется, когда они пытаются получить что-то в разделе администратора. Он работает по дизайну. Член не получит сообщение о неудачном входе в систему, потому что они не смогли войти в систему, а им отказали в доступе.

На протяжении всего приложения вы можете проверить, как человек пытается перейти на страницу, к которой у них нет доступа и скрыть сообщение, что у него нет доступа, но это дополнительная работа, но выполнимая.

Вы также можете изменить свое приложение таким образом, чтобы ссылки на определенные разделы сайта отображали только в том случае, если пользователь находится в правильной роли. Например, Roles.IsUserInRole («role») будет проверять, что текущий идентификатор пользователя/пользователя находится в роли. Существует также элемент управления LoginView в версии 2.0, в котором вы можете обернуть элементы управления, которые сделают это для вас приятным.

EDIT: Уточнение на основе вашего первого комментария.

Вот как проектируется поставщик ролей. Он перенаправляет вас на страницу входа, когда вы пытаетесь получить доступ к странице, на которую было отказано в файле web.config.

Вы можете сделать несколько вещей:

Удалить заявления отрицающих для групп в web.config, а затем сделать одну из двух вещей, или как:

Используйте контроль LoginView и инкапсулировать функциональность для роли «admin» в представлении администратора, а затем отобразить сообщение с ролью «член», к которой у них нет доступа.

И/Или напишите код на странице события загрузки страницы, проверяющей роли и представляя сообщение и/или перенаправляя пользователя на другую страницу.

ИЛИ оставить заявление о запрете в сети.конфигурации для групп и

на события загрузки страницы на страницу входа в систему сделать что-то вроде

 If Me.User.Identity IsNot Nothing and Me.User.Identity.Isauthenticated Then 
      If Me.User.IsInRole("admin") Then 
      Response.Redirect("~NoAccessToMemberStuff.htm") 
      Else If Me.User.IsInRole("member") Then 
      Response.Redirect("~/NoAccessToAdminStuff.htm") 
      End If 
    End If 
+0

Ok, я пропустил немного дополнительной информации, которая может помочь. Административная часть приложения на самом деле является отдельным сайтом. т. Е. www.mysite.com - сайт admin.mysite.com - admin site Так что вместо того, чтобы говорить, что у вас нет доступа, который показывает, что пользователь пытается войти в систему, чтобы их данные могли получить доступ к этому сайту point, я хочу просто показать ошибочное «сообщение о регистрации», которое показывает логин, но по умолчанию с неправильным входом. Я также использую 3.5 Мне не нравится перенаправление на «ваш журнал неудачной страницы», так как на самом деле это не единственная страница, которую вы можете видеть. Спасибо, – JamesStuddart

+0

Спасибо за дополнительный бит. Я думал, что могу застрять так. О, спасибо за вашу помощь. Я дам ему вихрь, когда вернусь в понедельник. Приветствует. – JamesStuddart

Смежные вопросы