asp.net授权:位置和IPrincipal.IsInRole

脚本

我正在使用Custom IPrincipalIIdentity来执行asp.net授权。 我使用IHttpModulePostAuthenticateRequest事件期间设置了PrincipalIdentity

web.config大致如下所示:

<system.web>
  <authorization>
    <allow verbs="GET,POST" roles="domaingroup"/>
    <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方法来检查domaingroup但不会再次调用以检查admin角色。 这是什么造成的? 我的location语法不正确还是存在更深层次的问题?

笔记

我最初认为admin目录中的web.config覆盖了根目录中的web.config,但我试图将其彻底删除,并将它用于location元素。 迄今为止都没有工作。


不要在<location>元素的路径开始处使用波浪号(〜),因为它们在那里没有被解释。 在你的例子中,path =“admin / user_search.aspx”应该是正确的。

链接地址: http://www.djcxy.com/p/90149.html

上一篇: asp.net Authorization: location and IPrincipal.IsInRole

下一篇: enum to string in modern C++11 / C++14 / C++17 and future C++20