在我的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部分并用通配符替换它? 无论文化如何,我都希望登录和恢复页面等可用。
答案 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>
我没试过这个,但也许是尝试一下。