C# 简单web.config文件问题asp.net
我正在asp.net应用程序中使用windows身份验证 不同的用户将有不同的访问部分的网站 我想在配置文件中执行以下操作: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
<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>