Web.config:位置和授权中的通配符

时间:2010-12-07 09:41:52

标签: asp.net web-config url-routing

在我的ASP.Net应用程序中,我正在使用URL路由 网址格式有点像:http://site/{culture}/project/{id}

要允许用户访问登录和恢复页面,我已将以下条目添加到我的web.config中:

<location path="en-GB/login">
  <system.web>
    <authorization>
      <allow users="*"/>
    </authorization>
  </system.web>
</location>

<location path="nl-NL/login">
  <system.web>
    <authorization>
      <allow users="*"/>
    </authorization>
  </system.web>
</location>

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

是否有一种符号形式,以便我可以跳过en-GB部分并用通配符替换它? 无论文化如何,我都希望登录和恢复页面等可用。

2 个答案:

答案 0 :(得分:4)

我不相信你可以在根web.config中放置相对路径,但这不是一个问题。您可以使用嵌套Web.Config文件的支持。

您可以在任何子目录中放置与此类似的web.config文件(根据特定目录的需要进行调整),您将获得所需的支持。由于设置更接近他们控制的代码文件,因此维护起来也容易得多。

<?xml version="1.0"?>
<configuration>
    <system.web>
      <authorization>
        <deny users="*"/>
      </authorization>
    </system.web>
</configuration>

身份验证类型,角色等的整体配置将在应用程序根目录的web.config中完成。因此,您无法从此方法为每个目录设置单独的登录页面,但您可以拥有一个登录页面,在需要时自动处理重定向(通过分析ReturnURL QueryString值)。

答案 1 :(得分:1)

查看this帖子,您可以更改登录页面的扩展名,并执行以下操作:

<system.webServer>
  <security>
    <requestFiltering>
      <fileExtensions>
        <add fileExtension=".login" allowed="true" />
      </fileExtensions>
    </requestFiltering>
  </security>
</system.webServer>

我没试过这个,但也许是尝试一下。