【问题标题】:asp.net Authorization: location and IPrincipal.IsInRoleasp.net 授权:位置和 IPrincipal.IsInRole
【发布时间】:2009-02-24 23:08:20
【问题描述】:

场景

我正在使用自定义 IPrincipal 和 IIdentity 进行 asp.net 授权。我在PostAuthenticateRequest 事件期间使用IHttpModule 设置了Principal 和Identity。

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 元素。到目前为止都没有工作。

【问题讨论】:

    标签: asp.net security web-config authorization


    【解决方案1】:

    不要在 元素的路径开头使用波浪号 (~),因为它们不会在那里被解释。在您的示例中, path="admin/user_search.aspx" 应该是正确的。

    【讨论】:

      猜你喜欢
      • 2016-12-08
      • 1970-01-01
      • 1970-01-01
      • 2019-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-06
      • 1970-01-01
      相关资源
      最近更新 更多