我有一个basecontroller,其属性如下:

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标志的用户才能查看该操作。

过滤器是否可以看到当前正在执行的控制器?

最佳答案

你不能用

if (filterContext.Controller is BaseController)
{
    BaseController ctr = (BaseController)filterContext.Controller;
    if (ctr.User.IsAdmin)
    {....}
}


Link

关于c# - 过滤器可以从我的BaseController访问属性吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26023954/

10-09 12:30