我的问题非常简单。 我有一个帐户" saqib"在Windows 7上我已经在" Administrators"中添加了这个帐户。组。现在我的要求是我想要" saqib"访问我的asp.net应用程序中的管理页面。我在IIS-7中启用了Windows身份验证并禁用了匿名身份验证。 我在我的应用程序中添加了一个带有管理页面的文件夹。我还在此文件夹中添加了一个web.config文件并添加了这些设置。
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow roles="Administrators"/>
<deny users="*"/>
</authorization>
</system.web>
</configuration>
现在当我想通过输入用户名作为&#34; saqib&#34;来访问此管理页面时和我的密码,我无法访问我的管理页面。为什么???
虽然我可以使用内置的&#34;管理员&#34;来访问该管理页面。帐户在web.config文件中具有相同的设置。为什么会发生这种情况?
答案 0 :(得分:0)
不应该是<deny users="?" />
。这会让您感到困惑,因为您拒绝所有用户,但管理员的角色也是用户,因此它无法正常运行。
答案 1 :(得分:0)
请查看此tutorial on MSDN以更好地了解您的代码 主要问题是您没有机会让您的管理员帐户进行验证 - 您只是拒绝最后一行中的所有用户。
所以你必须像@Dust提到的那样使用<deny users="?" />
,而不是<deny users="*" />
而不是<authorization>
<deny users="?" />
<allow roles="Administrators" />
<deny users="*" />
</authorization>
,而是在所有指令之前,如下所示:
authentication
另外,请确保您已为应用程序设置了<authentication mode="Forms" >
<forms loginUrl="login.aspx" name=".ASPXFORMSAUTH" />
</authentication>
元素以设置身份验证模式,例如:
{{1}}
答案 2 :(得分:0)
问题出在Windows UAC上。即使已登录帐户是admin,UAC也会阻止admin特权,这就是为什么您在安装某些软件并需要提升权限到admin时以弹出窗口的身份,并以普通用户身份运行admin用户。
在解决相同问题的同时,我在stackoverflow中找到了一些解决方法,但从未在web.config中使它正常工作。 In .NET/C# test if process has administrative privileges