其他分享
首页 > 其他分享> > 可以从我的BaseController访问属性吗?

可以从我的BaseController访问属性吗?

作者:互联网

我有一个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

标签:action-filter,c,asp-net-mvc
来源: https://codeday.me/bug/20191121/2050174.html