2010-12-19 2 views
0

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

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

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

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

[Authorize] 
public ActionResult Index() 
{ 
// Do stuff 
} 
Смежные вопросы