如何授予对需要身份验证的站点中使用通配符的httpHandler的匿名访问权限?

时间:2012-04-02 14:50:09

标签: asp.net

我有一个需要身份验证的应用程序,但有一些相关的服务可以匿名调用应用程序。调用是通过httpHandlers进行的,其中一些使用通配符。对于不使用通配符的httpHandler,我可以使用web.config中的location元素来管理安全性:

<httpHandlers>
  <add verb="*" path="ProcessFile.ashx" type="..." validate="false" />
  <add verb="*" path="DoSomethingElse.*.*.ashx" type="..." validate="false" />
</httpHandlers>

对于第一个处理程序,它很简单(为简洁起见省略了结束标记):

<location path="ProcessFile.ashx">
  <system.web>
    <authorization>
      <allow users="?" />
    ...

第二个处理程序不起作用,因为location不会使用通配符。我尝试使用'目录',但它似乎不起作用:

<httpHandlers>
  ..
  <add verb="*" path="test/DoSomethingElse.*.*.ashx" type="..." validate="false" />
</httpHandlers>


<location path="test">
  <system.web>
    <authorization>
      <allow users="?" />
    ...

有没有办法让它发挥作用?我在某种程度上有错误的语法吗?

1 个答案:

答案 0 :(得分:1)

我建议将预期匿名的处理程序隔离到公共文件夹中,然后将该文件夹的位置权限设置为普遍可用。因此,如果您有一个处理程序/Handlers和一个子文件夹/Public的文件夹,那么您可以拥有以下内容:

<location path="/Handlers/Public">
    <system.web>
        <authorization>
            <allow users="*"/>
        </authorization>
    </system.web>
</location>

然后,您可以将通配符处理程序放在此处,而无需按个人名称指定它。