gpt4 book ai didi

c# - 在 mvc 的 OnActionExecuting 中获取 Controller 的角色属性

转载 作者:行者123 更新时间:2023-11-30 19:57:17 25 4
gpt4 key购买 nike

我想在 OnActionExecuting 方法中读取 Controller 的过滤器属性。为此,我编写了这段代码,但是这个空数组。

public class BaseController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
var getActionName = filterContext.ActionDescriptor.ActionName;
var getControllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
var getUserName = User.Identity.Name;
var getUserRoles = Roles.GetRolesForUser(getUserName);
foreach (var filter in filterContext.ActionDescriptor.GetCustomAttributes(typeof(Roles), false))
{
var desiredValue = filter.ToString();
}
//some business logic here
}
}

这是我的 Controller

[Authorize(Roles = "Admin")]
public class AdminController : BaseController
{
public ActionResult Index()
{

return View();
}
}

我想获取执行 Controller 的允许角色列表。

最佳答案

您可以使用 ActionDescriptorControllerDescriptorGetFilterAttributes 方法:

    protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
var filters = new List<FilterAttribute>();
filters.AddRange(filterContext.ActionDescriptor.GetFilterAttributes(false));
filters.AddRange(filterContext.ActionDescriptor.ControllerDescriptor.GetFilterAttributes(false));
var roles = filters.OfType<AuthorizeAttribute>().Select(f => f.Roles);
...
}

关于c# - 在 mvc 的 OnActionExecuting 中获取 Controller 的角色属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30829015/

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