gpt4 book ai didi

asp.net-mvc - 在 asp.net MVC 应用程序的 web.config 中指定角色

转载 作者:行者123 更新时间:2023-12-02 04:59:18 25 4
gpt4 key购买 nike

我正在创建一个带有表单例份验证的 MVC 应用程序。我正在针对事件目录进行身份验证,因此创建了一个自定义 RoleProvider。我的应用程序只涉及一小部分角色,到目前为止我一直在 web.config 的 appSettings 部分中定义这些角色:

<appSettings>
<add key="DirectorRole" value="Domain\Directors" />
<add key="ManagementRole" value="Domain\Managers" />
...
</appSettings>

但是我在使用这种方法时遇到了一些问题:

  1. 我无法在 Controller 数据注释中引用这些设置:[Authorize(Roles = ConfigurationManager.AppSettings["DirectorRole"])],因为它无法编译,因此我必须指定组的名称再次:[Authorize(Roles = "Domain\\Directors")]
  2. 在我的 web.config 中,我想为我的角色提供程序指定 groupsToUse 并仅引用预先存在的列表,而不是维护同一组角色的两个单独列表。

似乎必须有一种更好/可重用的方法来定义 web.config 中的角色,有人可以指出我正确的方向吗?

最佳答案

我更喜欢使用自定义授权属性。就像这个一样。

public class MyAuthorizeAttribute : AuthorizeAttribute {

public MyAuthorizeAttribute(params string[] roleKeys) {
List<string> roles = new List<string>(roleKeys.Length);

//foreach(var roleKey in roleKeys) {
//roles.Add(ConfigurationManager.AppSettings["DirectorRole"]);
//}
var allRoles = (NameValueCollection)ConfigurationManager.GetSection("roles");
foreach(var roleKey in roleKeys) {
roles.Add(allRoles[roleKey]);
}

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

在您的 Controller 中,使用:

[MyAuthorize("DirectorRole")]

在你的 web.config 中

  <configSections>
<section
name="roles"
type="System.Configuration.NameValueFileSectionHandler,System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>

<roles>
<add key="DirectorRole" value="Domain\Directors" />
<add key="ManagementRole" value="Domain\Managers" />
</roles>

我希望这能很好地解决您的第一个问题。稍微调整一下也可以解决第二个问题。

关于asp.net-mvc - 在 asp.net MVC 应用程序的 web.config 中指定角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11539217/

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