У меня есть basecontroller, который имеет свойство, как:Может ли фильтр получить доступ к свойствам моего базового контроллера?
public class BaseController : Controller
{
public User CurrentUser {get;set;}
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
// if session cookie found, set User object here
}
}
Теперь я хочу создать Filer действий, который я мог бы установить на контроллерах или действиях, которые я хочу сделать что-то вроде:
if (User.IsAdmin)
{
}
else
{
// redirect to login or some page
}
Так что этот фильтр @AdminOnly
Я мог бы надеть контроллер или действие, и это обеспечит возможность просмотра только тех пользователей, у которых установлен флаг IsAdmin.
Имеет ли фильтр видимость в текущем контроле?
фильтра будет срабатывать после базового контроллера правильный? –
Нет, фильтр действий будет срабатывать перед контроллером onexecuting, но авторизация запускается до выполнения действия. Попробуйте приведенный выше код в вашем фильтре действий и в вашем базовом контроллере вы можете переопределить OnAuthorization вместо OnActionExecuting. – artm
, похоже, работает без меня, меняя его на OnAuth –