我有一个基本控制器,它具有如下属性:
public class BaseController : Controller
{
public User CurrentUser {get;set;}
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
// if session cookie found, set User object here
}
}
现在我想创建一个动作文件管理器,我可以在控制器或动作上设置我想做的事情:
if (User.IsAdmin)
{
}
else
{
// redirect to login or some page
}
所以这个过滤器@AdminOnly
我可以放置一个控制器或动作,这将确保只有设置了IsAdmin标志的用户才能查看该动作。
过滤器是否可以看到当前正在执行的控制器?
答案 0 :(得分:3)
你不能使用
if (filterContext.Controller is BaseController)
{
BaseController ctr = (BaseController)filterContext.Controller;
if (ctr.User.IsAdmin)
{....}
}