Запись в .htaccess:)
## Redirect from non-www to www (remove the two lines below to enable)
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Обычно я использую класс с набором строковых констант. Это не идеальное решение, так как вам нужно помнить о том, чтобы использовать его везде, но, по крайней мере, оно избавляет от возможности опечаток.
static class Role {
public const string Admin = "Admin";
}
Хотя он не использует перечисления, я использовал приведенное ниже решение, где мы подклассифицируем фильтр Authorize, чтобы принимать аргументы имени роли переменной длины в конструкторе. Используя это вместе с именами ролей, объявленными где-то в константных переменных, мы избегаем магических строк:
public class AuthorizeRolesAttribute : AuthorizeAttribute
{
public AuthorizeRolesAttribute(params string[] roles) : base()
{
Roles = string.Join(",", roles);
}
}
public class MyController : Controller
{
private const string AdministratorRole = "Administrator";
private const string AssistantRole = "Assistant";
[AuthorizeRoles(AdministratorRole, AssistantRole)]
public ActionResult AdminOrAssistant()
{
return View();
}
}
(я написал об этом чуть подробнее - http://tech-journals.com / jonow / 2011/05/19 / избегая-MAGIC-строка-в-Asp-нетто-MVC Авторизованных-фильтров )
Я использовал статический класс, определяющий кучу строковых констант, как предложил Матти, а в моем текущем проекте я использую приведенный ниже метод расширения с перечислением. Оба подхода работают очень хорошо.
public static class EnumerationExtension
{
public static string GetName(this Enum e)
{
return Enum.GetName(e.GetType(), e);
}
}
Это не так сложно настроить AuthorizeAttribute
так, как вы предлагаете.
Подтипируйте его, добавьте пользовательское свойство для вашего типа перечисления и вызовите ToString()
для переданного значения. Поместите это в обычное свойство роли. Это займет всего несколько строк кода, а AuthorizeAttribute
все равно сделает всю реальную работу.
+1 для Матти, так как consts также является хорошим выбором.