C# 简单web.config文件问题asp.net

C# 简单web.config文件问题asp.net,c#,asp.net,iis,C#,Asp.net,Iis,我正在asp.net应用程序中使用windows身份验证 不同的用户将有不同的访问部分的网站 我想在配置文件中执行以下操作: <appSettings> <role1> <user>agordon</user><user>jsmith</user> </role1> <role2><user>dtodd</user><user>kveel

我正在asp.net应用程序中使用windows身份验证

不同的用户将有不同的访问部分的网站

我想在配置文件中执行以下操作:

    <appSettings>
     <role1>
<user>agordon</user><user>jsmith</user>
     </role1>
<role2><user>dtodd</user><user>kveel</user></role2>
    </appSettings>
并检查该用户是否存在于特定角色中

您可以这样做,但这并不是最好的方法

这里的问题是appSettings不受Web.Config架构的控制,因此您需要以一种可怕的方式以编程方式枚举appSettings:

if (configurationSettings.HasKey("Role1")) { ... }
else if (configurationSettings.HasKey("Role2")) { ... }
else if (configurationSettings.HasKey("Role3")) { ... }
//continue ad.nauseum; it's not fun - trust me!
我知道这不是你要问的,但如果你使用的是普通的ASP.NETWebForms,那就有点费劲了;在每个页面/控件中,您需要找出当前用户,然后确定该用户是否具有访问权限,然后重定向或继续

如果您使用ASP.NETMVC,那么在使用属性时会更加简洁

Authorize(Roles = "Managers")]
public ActionResult CompanySecrets()
{
    return View();
}
那里的代码所做的是,如果用户没有管理者角色,就不要给他们访问权限

为了提供一个相反的示例,这里有一个使用Web表单的类似方法(msdn示例):

使用
元素:

<configuration>
   <system.web>
      <authorization>
         <allow users="*" />
         <deny users="?"/>
      </authorization>
   </system.web>
</configuration>

然后,您可以对站点的特定部分进行修改:

<location path="Pages/Administration">
       <system.web>
          <authorization>
             <deny roles="*"/>
             <allow roles="Admin" />
          </authorization>
       </system.web>
</location>


非常感谢。为了能够扮演角色,我必须经历疯狂的考验,才能让它发挥作用?请解释一下反对票;我已经说明了OP询问的方法的问题,并提供了两个解决问题的不同方法的示例。不,不,角色身份验证很好-问题是通过AppSettings进行验证。我提供的MSDN链接显示了如何进行角色身份验证,您只需制定一种存储方法,将您的访问权限与报告的角色相关联。我尝试让角色正常工作,但这非常困难,因为我需要安装从IIS到域控制器的访问权限。那么,您的IIS服务器与Active Directory不在同一个域中吗?谢谢,我应该在哪里指定这与网站的哪些部分有关?非常感谢,你能帮我做到这一点吗:
<location path="Pages/Administration">
       <system.web>
          <authorization>
             <deny roles="*"/>
             <allow roles="Admin" />
          </authorization>
       </system.web>
</location>