我正在使用自定义IPrincipal
和IIdentity
来执行asp.net授权。我使用Principal
在Identity
活动期间设置了PostAuthenticateRequest
和IHttpModule
。
web.config看起来大致如下:
<system.web>
<authorization>
<allow verbs="GET,POST" roles="domain\group"/>
<deny verbs="*" users="*"/>
</authorization>
</system.web>
<location path="~/admin/user_search.aspx">
<system.web>
<authorization>
<allow verbs="GET,POST" roles="admin"/>
<deny verbs="*" users="*"/>
</authorization>
</system.web>
</location>
发出请求时,IPrincipal.IsInRole
方法会被调用一次以检查domain\group
,但不会再次调用以检查admin
角色。是什么造成的?我的location
语法是否不正确或是否存在更深层次的问题?
我最初认为admin目录中的web.config覆盖了根目录中的web.config,但我已经尝试将其完全删除,并将其用于location
元素。到目前为止都没有工作过。
答案 0 :(得分:3)
请勿在&lt; location&gt;的路径开头使用波浪号(〜)。元素,因为它们没有被解释。在您的示例中,path =“admin / user_search.aspx”应该是正确的。