Аутентификация ASP.Net. Могу ли я получить несколько ответов, когда пользователь не может пройти аутентификацию / авторизацию для доступа к странице - PullRequest
0 голосов
/ 16 февраля 2012

Я использую аутентификацию формы ASP.net для своего веб-приложения.У меня есть папка "admin" для административной работы, а также я могу заблокировать одного пользователя, если он / она плохо себя ведет.

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

Вопрос: какмогу ли я настроить веб-приложение, чтобы при невозможности доступа пользователя к странице я мог отображать разные страницы, такие как «вам нужны права администратора для доступа к этой странице» / «ваша учетная запись заблокирована» / (обычная страница входа в систему) ?

ValidateUser () может возвращать только bool.: (

Большое спасибо

Ответы [ 2 ]

1 голос
/ 16 февраля 2012

Вам нужно будет реализовать роли и добавить к ним людей.После того, как вы назначите людей на соответствующие роли, вы должны проверить, есть ли у человека соответствующая роль для доступа к странице.Если нет, перенаправьте их или покажите правильное сообщение об ошибке.Вы сможете сделать это с помощью кода, как будто вы уже пытаетесь:

if(!Roles.IsUserInRole("Administrator")) Response.Redirect("~/");

Или вы можете использовать web.config

<configuration>
   <location path="memberPages">
       <system.web>
            <authorization>
               <allow roles="Administrator" />
               <deny users="*" />
            </authorization>
          </system.web>
        </location>
<configuration>

больше информации:

0 голосов
/ 16 февраля 2012

Я решил эту проблему, дав разные ссылки на разные роли.

Администратору вы даете www.yoursite.com/admin пользователю вы даете www.yoursite.com/private

asp.net автоматически перенаправит оба на страницу login.aspx, но вы можете получить из параметра url тип пользователя.

//I detect where the request originated from
    string str = Request.QueryString["ReturnUrl"] == null ? "" : Request.QueryString["ReturnUrl"].ToString();
        //if this is Admin can access to Admin Area only
        if (str.Contains("Admin") == true || str.Contains("admin") == true || str.Contains("ADMIN") == true)
            { .......
...