Реклама:

При этом только пользователи роли SpecialUser смогут видеть навигационные ссылки к подкаталогу Special Users. Если вы используете последний пример, то увидите, что внешняя ссылка также исчезает. Когда провайдер SitcMap не может проверить авторизацию, он не станет отображать ссылку по умолчанию. Чтобы показывать ссылки независимо от настроек авторизации, добавьте атрибут roles в элемент siteMapNode и укажите роли, которые могут видеть эту ссылку. Знак звездочки (*) указывает все роли. Этот принцип применяется также к младшим узлам SiyeMap, которые не ука? зывают на специфическую страницу, но используются для создания иерархической структуры данных карты сайта.

Файл карты сайта, использующий Security Trimming и атрибут roles

<?xml version-'"!. О" encoding="utf-8" ?> <siteMap>

<siteMapNode url=""/default.aspx" tiTle="Home"> <siteMapNode url=""/CreateUser.aspx"

title="Create new user" /> <siteMapNode url=" YChangePassword.aspx"

title="Change your password" /> <SiteMapNode url="http://www.leastprivilege.com"

title="Author Homepage" roles="«" />

<siteMapNode title="Special users area" roles="«"> <siteMapNode url="7SpecialUsers/0efault.aspx" title="Home" />

-eHapNoae u- " /SpecialUsers/Pagei.aspx title="Pagel" /> <siteMapNode j-i=' /SDecialusers/Page2.aspx' titl.eг"Page2" /> :/siteMapNode> </siteMapNode> </slteMap>

Создание инструментов и провайдеров

Итак, теперь вам известно, как можно использовать роли, членство в них и провайдеры ASP.NET. В определенных ситуациях встроенные провайдеры (или даже службы) могут не работать по разным причинам;

» нужна поддержка другого хранилища данных или другой схемы;

» нужна интеграция с существующими мандатами или хранилищем ролей;

» требуется авторизация с использованием критериев, не связанных с ролями.

В некоторых случаях для существующей службы нужно лишь написать еще один провайдер, например, добавить поддержку Oracle или использовать собственную схему баз данных. (Этот «простой» случай описан далее в разделе «Создание собственных ролей или провайдера Membership* этой главы.) Тем не менее некоторые требования невозможно выполнить с помощью существующих служб. В частности, служба Membership предназначена для специфического сценария и может оказаться неприемлемой в вашем проекте.

Возможно, вам также потребуется ввести новые службы, откат которых должен выполняться путем рсконфигурирования. Например, вы можете обеспечить новую функциональность в приложениях ASP.NET с возможностью изменения конкретной реализации без изменения кола страниц.

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


⇐ Предыдущая страница| |Следующая страница ⇒