2013-04-14 2 views
4

Для того, чтобы разрешить контроллер для той или иной роли, следующий атрибут требуется от класса контроллера:MVC настроить Авторизоваться значение ролей и сильно типизированных роль

[Authorize(Roles = "SampleRole")] 

Это требует имя роли, чтобы быть жестко закодированы на Контроллер и, похоже, не является гибким решением. Мой вопрос в том, что можно указать значение для этой роли в web.config и использовать этот ключ в контроллере?

<appSettings> 
    <add key="SampleRoleKey" value="SampleRole" /> 
    ... 
</appSettings> 

И в контроллере,

[Authorize(Roles = "SampleRoleKey")] 

Другой вопрос заключается в том, что мы можем использовать сильно типизированных роль санкционировать контроллер?

ответ

4

Используйте статический класс с общественными Const-s:

public static class Roles 
{ 
    public const string SampleRoleKey = "SampleRole"; 
} 

Создание пользовательского MyAuthorizeAttribute, полученный из AuthorizeAttribute иметь свойство, которое может обрабатывать массив строк, а затем:

[MyAuthorize(MyRoles = new[]{ Roles.SampleRoleKey }] 
+0

спасибо, это было полезно. Я нашел другое решение, используя перечисления [здесь] (http://stackoverflow.com/questions/2828444/non-string-role-names-in-asp-net-mvc) – user1014639

+0

Что такое 'MyRoles'? Framework не распознает его. – Burjua

+1

Жаль, что я исправил ответ (это просто пример). –

Смежные вопросы