Ролевая авторизация - PullRequest
       26

Ролевая авторизация

1 голос
/ 06 августа 2010

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

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

спасибо

Ответы [ 4 ]

3 голосов
/ 02 сентября 2010

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

    protected void Page_Load( object sender, EventArgs e )
    {
        if( Page.IsPostBack )
            return;

        if( !Request.IsAuthenticated )
            return;

        if( !string.IsNullOrEmpty( Request.QueryString["ReturnUrl"] ) && !UrlAuthorizationModule.CheckUrlAccessForPrincipal(Request.QueryString["ReturnUrl"], User,"GET"))
        {
            // In Forms Authentication, authenticated but unauthorized requests are converted into a Redirect to the Login page.  
            // Redirect these to an error page instead.
            Response.Redirect( "~/UnauthorizedAccess.aspx", false );
        }
        else
        {
            Response.Redirect( FormsAuthentication.DefaultUrl, false );
        }
    }

Смотрите эту ссылку, чтобы увидеть картину происходящего и дополнительную информацию:

http://www.asp.net/security/tutorials/user-based-authorization-cs

0 голосов
/ 02 сентября 2010

Также можно использовать web.config для настройки разрешений для различных папок или файлов. Каждая папка может иметь список разрешенных или запрещенных сообщений, например:

<?xml version="1.0"?>
<configuration>
  <system.web>
    <authorization>
      <allow roles="Administrators" />
      <allow roles="Random Role" />
      <deny users="*" />
      <deny users="?" />
    </authorization>
  </system.web>
</configuration>

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

0 голосов
/ 01 сентября 2010

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

0 голосов
/ 06 августа 2010

Если авторизация не пройдена, будет выдано исключение.Это должно пройтиЧто вы используете для аутентификации?Вы отключили анонимный доступ?

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