ASP.NET MVC 2 Проблема с методом OnActionExecuting - PullRequest
0 голосов
/ 19 декабря 2010

У меня есть контроллер под названием SomeController. Я хочу проверить, вошел ли пользователь в систему или у него есть намерения выполнить какое-либо действие в этом контроллере. Для этого я прочитал эту статью http://blog.wekeroad.com/blog/aspnet-mvc-securing-your-controller-actions/ и написал свой собственный класс (тест):

public class BaseFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
        {
            FormsAuthentication.RedirectToLoginPage();
        }
        //here will be checking the user permissions if he's logged in
    }
}

[BaseFilter]
public class SomeController : BaseController
{
 ...
}

но, как вы можете понять, это делает бесконечный цикл, когда я хочу выполнить какое-либо действие с этого контроллера. Итак, как с этим справиться?

1 Ответ

1 голос
/ 19 декабря 2010

Вы можете применить фильтр действий к соответствующим методам, а не на уровне класса.

Лично я бы назвал это как-то как Authorize, а затем применил бы его к методам контроллера, требующим авторизации.

[Authorize]
public ActionResult Index()
{
// Do stuff
}
...