Для аутентификации на основе ролей применяется атрибут roles тега allow. Например, если мы хотим запретить доступ всем, кроме пользователей из группы Admin , мы должны вставить такие строки в файл Web.config.
<authorization>
<allow roles="Admin" />
<deny users="*" />
</authorization>
Затем при каждом запросе нужно связывать учетные записи пользователей и роли. Обычно это делается в обработчике события AuthenticateRequest в файле Global.asax.
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
HttpApplication appl = (HttpApplication)sender;
if (appl.Request.IsAuthenticated && appl.User.Identity is FormsIdentity)
{
FormsIdentity identity = (FormsIdentity)appl.User.Identity;
DataTable tblUsers = (DataTable)Application["UsersTable"];
appl.Context.User = new GenericPrincipal(identity,
new string[] {(string)(tblUsers.Rows.Find(identity.Name)["Role"]) } );
}
}
В коде проверяется тип аутентификации пользователя и то, что он уже зарегистрирован. Имя пользователя извлекается из cookie свойством Name. Таблица с именами пользователей и их ролями для повышения быстродействия была сохранена в объекте Application. Из этой таблицы и находим роль пользователя, которую сохраняем в объекте GenericPrincipal.
Источник: www.cyberguru.ru