gpt4 book ai didi

c# - 对所有 Controller 操作执行操作过滤器 (C#/ASP.NET MVC)

转载 作者:可可西里 更新时间:2023-11-01 08:34:58 24 4
gpt4 key购买 nike

我制作了一个新的 Action 过滤器(属性,类似于 [Authorize]),它根据 session 值授权访问 Controller Action 。但是,我基本上是用该属性装饰我的所有 Controller 操作(除了极少数)。

因此,我认为在我将 [ExemptFromAuthorize] 属性附加到 Controller 操作的情况下,让操作过滤器始终执行除外会更好吗? (也许通过继承到我自己的 Controller 类?)

我该怎么做?

最佳答案

运行jeef3的答案,我想到了这个。它可以使用更多的错误检查和稳健性,例如多个定界操作,但总体思路可行。

在您的特定情况下,您可以测试 session 值并决定也退出授权。

public class AuthorizeWithExemptionsAttribute : AuthorizeAttribute
{
public string Exemption { get; set; }
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext.RouteData.GetRequiredString("action") == Exemption)
return;

base.OnAuthorization(filterContext);
}

}

用法:

[AuthorizeWithExemptions(Roles="admin", ExemptAction="Index")]
public class AdminController : Controller
...

关于c# - 对所有 Controller 操作执行操作过滤器 (C#/ASP.NET MVC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1343652/

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