我有一个Web.config文件,根据他的角色对登录网页的用户进行身份验证。
目前的实施如下:
<authorization>
<allow roles = "BUILTIN\Administrators" />
<allow roles = "PRIVILEGED" />
<allow roles = "NON_PRIVILEGED" />
<deny users = "*" />
</authorization>
根据我的理解,上述实现应该允许管理员用户或属于“PRIVILEGED”或“NON_PRIVILEGED”角色的用户。其他不具备上述任何角色的用户应被拒绝访问,其行为由标签<deny users = "*" />
但是,我发现授权用户(拥有Administrators / Privileged / Non_privileged所需角色)被拒绝访问该网页,并显示消息“404-Unauthorized:由于凭证无效而拒绝访问”
当我从配置文件中删除标记<deny users = "*" />
时,我发现授权用户可以毫无问题地访问该网页。删除<deny users = "*" />
后,配置文件如下所示< / p>
<authorization>
<allow roles = "BUILTIN\Administrators" />
<allow roles = "PRIVILEGED" />
<allow roles = "NON_PRIVILEGED" />
</authorization>
所以,问题在于标记<deny users = "*" />
,它似乎拒绝所有用户的访问,无论他们拥有什么角色。
根据我对Web配置和IIS的基本知识,我可以说配置文件中没有错误地使用<deny users = "*" />
。所以,我不知道它为什么拒绝所有用户访问。
目前,我们正在使用IIS版本7。
答案 0 :(得分:0)
任何未与<allow>
标记匹配的用户的默认访问权限是拒绝。
<deny>
的重点是覆盖<allow>
。
答案 1 :(得分:0)
您是否已将角色管理器设置为启用?
<system.web>
<roleManager enabled="true" />
</system.web>