Защитите весь сайт за логином, т. Е. Авторизуйте все действия на всех контроллерах. - PullRequest
3 голосов
/ 04 ноября 2010

заголовок говорит сам за себя.

У меня есть веб-сайт, который будет работать только после входа в систему, поэтому я хочу убедиться, что к нему нельзя получить доступ, если вы не вошли в систему. Это включает ActionResults, JsonResults и т. Д ...

В настоящее время у меня на контроллерах [Authorize], что довольно утомительно и не очень СУХОЙ :)

Так можно ли защитить весь веб-сайт одной магической строкой кода? (страница входа, очевидно, должна быть доступна)

Также обратите внимание, что мне по-прежнему потребуется дополнительная защита некоторых действий, которые будут использоваться только определенными пользователями / ролями

Ответы [ 3 ]

9 голосов
/ 04 ноября 2010

Если у вас несколько контроллеров, создайте AuthorizeController, от которого вы наследуете свои контроллеры, которые должны быть защищены.Просто установите атрибут [Authorize] для AuthorizeController:

[Authorize]
public class AuthorizeController: Controller
{
}

public class HomeController : AuthorizeController
{
    ...
}

// don't inherit AccountController from AuthorizeController
public class AccountController : Controller
{
    public ActionResult Login()
    {
        ...
    }
}
3 голосов
/ 23 декабря 2014

Если вы пытаетесь защитить весь веб-сайт, вы можете использовать глобальный фильтр:

public class FilterConfig
{
  public static void RegisterGlobalFilters(GlobalFilterCollection filters)
  {
    filters.Add(new AuthorizeAttribute);
  }
}

Для получения дополнительной информации см. Здесь http://visualstudiomagazine.com/blogs/tool-tracker/2013/06/authenticating-users-in-aspnet-mvc-4.aspx

1 голос
/ 04 ноября 2010

Неважно! Я думаю, что нашел это!

Размещение [Authorize] над классом Controller, кажется, защищает все действия и дополнительно настраивается для каждого отдельного действия. ДА!

[Authorize]
public class SomeController : Controller 
{
    // All logged in users
    public ActionResult Index() 
    {
        ...
    }

    [Authorize(Roles="Admin")] // Only Admins
    public ActionResult Details() 
    {
        ...
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...