gpt4 book ai didi

c# - MVC5 ASP 身份动态授权属性

转载 作者:太空宇宙 更新时间:2023-11-03 23:36:17 24 4
gpt4 key购买 nike

我有一个带有后端的 MVC5 项目来配置哪个角色可以访问哪个菜单。实现基于角色的授权的正常方式是这样的。

[Authorize(Roles="Admin")]
public ActionResult UpdateProduct(ProductModel model)
{
//do something
return View(model);
}

因为我需要角色是动态的,所以我在想这样的事情。

[Authorize(Roles=GetRoles("UpdateProduct"))]
public ActionResult UpdateProduct(ProductModel model)
{
//do something
return View(model);
}

显然它不起作用,因为属性是静态元数据。

我环顾四周,发现了这个 MVC 3 dynamic authorization of multiple roles and users但是否有更简洁的方法来实现这一点?

注意:我试图避免在每个方法中调用 User.IsInRole

最佳答案

C# 中代码属性的定义是它是静态的 - 因此您不能拥有方法 GetRoles()

你提议想要一个属性,例如:

[Authorize(Roles=GetRoles("UpdateProduct"))]

这意味着您必须在代码中实现 GetRoles(),因此请使用派生自 Authorize 的自定义属性。

    public class CustomAuthorizeAttribute : AuthorizeAttribute
{

public CustomAuthorizeAttribute(string roleSelector)
{

Roles = GetRoles(roleSelector);
}

private string GetRoles(string roleSelector)
{
// Do something to get the dynamic list of roles instead of returning a hardcoded string
return "Somerole";
}
}

现在您可以:

[CustomAuthorize("updateProduct")]

关于c# - MVC5 ASP 身份动态授权属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30472417/

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