|
https://technet.microsoft.com/en-us/library/ms143221(v=sql.105).aspx |
Локализация проектов. Аутентификация пользователей
По умолчанию всем пользователям доступны все страницы приложения. Если нужно ограничить доступ пользователей к какой-нибудь странице, в Web.config вводится запись:
<location path="Admin.aspx">
<system.web>
<authorization>
<allow roles="Admin" />
<deny users="*" />
</authorization>
</system.web>
</location>Значение "?" обозначает анонимного пользователя, а "*" — всех пользователей:
<allow users="?" />
В элементах allow и deny пользователи и роли могут быть заданы перечислением:
<allow users="Alex, Dave" />
Элемент location определяет часть сайта, доступ к которой нужно ограничить. В данном случае это одна страница Admin.aspx. Первая часть авторизации разрешает доступ к ней пользователям в роли администратора Admin. Вторая запрещает доступ всем остальным пользователям.
Если элемент system.web находится в корневом узле файла, то вложенный в него узел authorization определяет настройки доступа ко всему сайту.
Когда неавторизованный пользователь пытается получить доступ к странице, открывается форма, определенная в атрибуте forms loginUrl. Если он введет имя и пароль пользователя, который имеет доступ к странице, то она откроется, иначе опять ему или ей будет показана форма логина.
Часто бывает нужно сконфигурировать с точки зрения безопасности систему навигации. Это значит, что меню не должно показывать те страницы, для просмотра которых пользователь не авторизован:
<siteMap defaultProvider="AspXmlSiteMapProvider"
enabled="true">
<providers>
<clear/>
<add name="AspXmlSiteMapProvider"
type="System.Web.XmlSiteMapProvider, System.Web,
Version=2.0.3600.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"
siteMapFile="web.sitemap"
securityTrimmingEnabled="true"/>
</providers>
</siteMap>Здесь атрибут securityTrimmingEnabled, установленный в true, заставляет провайдера карты сайта фильтровать узлы в зависимости от роли пользователя. Это значит, что в элементах навигации будут видны только доступные страницы.
Член User страницы позволяет получить доступ ко всей информации, касающейся текущего пользователя.
Метод IsInRole определяет, принадлежит ли пользователь к роли:
if (User.IsInRole("Admin"))
Page.Title = "Hello, Administrator!";Свойство Identity дает информацию об аутентификации пользователя:
if (User.Identity.IsAuthenticated) //выполнить код, если пользователь легален
User.Identity.AuthenticationType показывает способ аутентификации, установленный в Web.config.
Можно ограничить доступ не только к страницам, но и к частям страниц.