gpt4 book ai didi

c# - ActionFilterAttribute - 适用于特定 Controller 类型的操作

转载 作者:可可西里 更新时间:2023-11-01 08:05:21 25 4
gpt4 key购买 nike

我正在使用 ActionFilterAttribute 来执行自定义身份验证逻辑。该属性将仅用于包含我的身份验证逻辑的派生 Controller 类。

这是我的 Controller ,派生 self 的自定义 Controller 类和一个示例属性:

public class MyController : CustomControllerBase
{

[CustomAuthorize(UserType = UserTypes.Admin)]
public ActionResult DoSomethingSecure()
{
return View();
}

}

这是我的 ActionFilterAttribute 的示例:

public class CustomAuthorizeAttribute : ActionFilterAttribute
{
public MyUserTypes UserType { get; set; }

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
myUser user = ((CustomControllerBase)filterContext.Controller).User;

if(!user.isAuthenticated)
{
filterContext.RequestContext.HttpContext.Response.StatusCode = 401;
}
}
}

效果很好。

问题是:我能否要求此属性仅用于我的自定义 Controller 类型中的操作?

最佳答案

您可以将 ActionFilter 放在类本身上。类中的所有 Action 都将实现 ActionFilter。

[CustomAuthorize]
public class AuthorizedControllerBase : CustomControllerBase
{
}

public class OpenAccessControllerBase : CustomControllerBase
{
}

public class MyRealController : AuthorizedControllerBase
{
// GET: /myrealcontroller/index
public ActionResult Index()
{
return View();
}
}

关于c# - ActionFilterAttribute - 适用于特定 Controller 类型的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1440121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com