Существует несколько вариантов авторизации в ASP.NET MVC. То, как вы делаете, действительно очень неудобно, но есть лучший способ! Вы DO иметь атрибут макросы в C# :)
[Authorize]
public ActionResult DoSomething(int someParam)
{
//Do stuff here.
Return View();
}
[Авторизоваться] тег может быть помещен непосредственно над любым действием на контроллере или даже выше класс сам контроллер, чтобы сделать весь контроллер доступен только для авторизованных пользователей ,
[Authorize]
public class HomeController : Controller
{
//Actions and stuff
}
Если вы используете поставщик членства и роли, вы даже можете включить в этот атрибут фильтр роли.
[Authorize(Roles="trader")]
public ActionResult SomeAction(int someParam)
{
//stuff...
}
Также возможно применять авторизацию для всех URL-маршрутов. Подобно тому, как вы применяли авторизацию на уровне каталога в традиционных веб-формах ASP.NET. Просто добавьте что-то вроде этого, чтобы ваш web.config:
<location path="Admin">
<system.web>
<authorization>
<deny users="?"/>
<allow roles="SiteAdmin"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
Это говорит UrlAuthorizationModule (который зарегистрирован для всех приложений ASP.NET по умолчанию), что для URL ~/администратора и соответствия URL ~/Admin/*, он должен сделать следующее:
• Запретить доступ для анонимных посетителей()
• Разрешить доступ с проверкой подлинности посетителей в роли SiteAdmin()
• Запретить доступ ко всем другим посетителям()