gpt4 book ai didi

asp.net - MVC 动态页面权限使用授权属性?

转载 作者:行者123 更新时间:2023-12-04 01:44:27 27 4
gpt4 key购买 nike

我正在为我公司的站点设置我的用户权限,我们必须创建几个不同的角色和权限。我从 here 找到了一些关于创建实际角色和组以及如何实现它们的很棒的信息。 .但是,这仍然需要将角色硬编码到授权标签中,有没有办法动态填充授权标签,以便我可以在网站上有一个页面,我可以快速为不同的页面分配不同的权限,而无需必须返回代码并修改我创建的每个页面的权限集?

最佳答案

实现以下自定义授权属性。

public class CustomAuthorizeAttribute : AuthorizeAttribute
{
public CustomAuthorizeAttribute (params string[] roleKeys)
{
var roles = new List<string>();
var allRoles = (NameValueCollection)ConfigurationManager.GetSection("CustomRoles");
foreach(var roleKey in roleKeys) {
roles.AddRange(allRoles[roleKey].Split(new []{','}));
}

Roles = string.Join(",", roles);
}

public override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
if (filterContext.Result is HttpUnauthorizedResult)
{
filterContext.Result = new RedirectResult("~/Error/AcessDenied");
}
}
}

然后将以下内容添加到 web.config
<section name="CustomRoles" type="System.Configuration.NameValueFileSectionHandler,System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

然后,作为一个例子
 <CustomRoles>
<add key="UsersPagePermission" value="HR,Accounts,Developers" />
</CustomRoles>

在您的 Controller 或操作或全局过滤器中(无论您喜欢哪个:))添加属性

例如
[CustomAuthorize("UsersPagePermission")]
public class UserController : Controller

这将允许您修改 web.config 而不是代码来更改权限。

关于asp.net - MVC 动态页面权限使用授权属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23249887/

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