gpt4 book ai didi

asp.net - ASP MVC 授权除少数以外的所有操作

转载 作者:行者123 更新时间:2023-12-03 10:06:32 25 4
gpt4 key购买 nike

我有一个 Controller ,我想默认情况下要求对所有操作进行授权,除了几个操作。因此,在下面的示例中,除索引之外的所有操作都应该需要身份验证。我不想用 Authorize 装饰每个 Action ,我只想在某些情况下覆盖默认授权,可能会使用 NotAuthorize 等自定义过滤器。

[Authorize]
public class HomeController : BaseController
{
[NotAuthorize]
public ActionResult Index()
{
// This one wont
return View();
}

public ActionResult About()
{
// This action will require authorization
return View();
}
}

最佳答案

好的,这就是我所做的。如果有更好的方法请告诉我。

public class NotAuthorizeAttribute : FilterAttribute
{
// Does nothing, just used for decoration
}

public class BaseController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
// Check if this action has NotAuthorizeAttribute
object[] attributes = filterContext.ActionDescriptor.GetCustomAttributes(true);
if (attributes.Any(a => a is NotAuthorizeAttribute)) return;

// Must login
if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
{
filterContext.Result = new HttpUnauthorizedResult();
}
}
}

关于asp.net - ASP MVC 授权除少数以外的所有操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/780436/

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