Вы можете установить [Authorize] для каждого контроллера, который вам нужен.
Вы можете добавить фильтр GlobalFilters.Add (new AuthorizeAttribute ()); в файле Startup.cs (или Global.asax) и поместите атрибут [AllowAnonymus] для любого контроллера или действия, которое вы разрешаете незарегистрированным пользователям.
Если вы решили установить [Авторизовать] на каждом безопасном контроллере, вы должны быть уверены, что любой контроллер, добавленный вами или кем-либо еще в команде, будет в безопасности. Для этого требования я использую такой тест:
[Fact]
public void AllAuth()
{
var asm = Assembly.GetAssembly(typeof (HomeController));
foreach (var type in asm.GetTypes())
{
if (typeof(Controller).IsAssignableFrom(type))
{
var attrs = type.GetCustomAttributes(typeof (AuthorizeAttribute));
Assert.True(attrs.Any());
}
}
}
Я думаю, что этот способ лучше, чем создание ProtectedContoller, поскольку он не гарантирует, что в вашей системе все контроллеры защищены. Также этот способ не использует наследование, что делает проект тяжелее.