我正在学习微软考试,并正在处理一些示例问题。我有这样的疑问:Asp.Net授权规则优先
“你正在开发其配置为使用会员和角色提供ASP.NET Web应用程序
你需要让所有用户执行HTTP GET,但必须只允许。用户名为Moderator来执行POST操作,应该将哪个配置添加到web.config文件中?“
<authorization>
<deny verbs="POST" users="*" />
<allow verbs="POST" users="Moderator" />
<allow verbs="GET" users="*" />
</authorization>
<authorization>
<allow verbs="GET" users="*" />
<allow verbs="POST" users="Moderator" />
<deny verbs="POST" users="*" />
</authorization>
还有两个答案,但他们显然是错的,所以我没有在这里复制它们。
我可以在这两套规则之间唯一区别的是规则的排列顺序。
正确答案是第二套规则。这里的规则首先允许“主持人”的POST访问,然后将其移除给其他人。这对我来说似乎是违反直觉的 - 给一个人一个特权,然后从每个人中删除这个特权,然而这个特权在之后仍然有特权。
如果第一套规则更有意义 - 首先否认所有人,然后选择性地授予个人访问权限。显然这是错误的!
任何人都可以解释为什么这是这种情况,所以我可以更好地理解这一点?
我明白了谢谢。这仅仅是先到先得的情况。 Asp.Net首先发现“允许版主”,因为它匹配,所以可以忽略其余部分。 –
繁荣。这正是我需要的。 +1。 – dstepan