首页 > 解决方案 > 如何设置 Microsoft 标识以尊重默认文件名

问题描述

我正在尝试从表单身份验证/成员身份迁移到 asp.net 身份。

我遇到的一个问题:如果我将 LoginPath 设置为“/account/”,注销的用户最终会出现无限重定向循环(不是真的;它会不断扩展 returnURL,直到服务器阻止请求具有过长的查询字符串)。这发生在 上/account/,但/account/default.aspx已注销的用户可以访问。我认为问题在于 OWIN 中间件对默认文档的处理方式与表单身份验证/IIS 处理方式不同。目前,“default.aspx”被配置为默认文档。

我尝试设置UseFileServer用于设置DefaultFileNames以包含“default.aspx”,但这似乎没有帮助。我也尝试过使用path="." inheritInChildApplications=false"而不是path="default.aspx",但这导致了“配置部分'system.web/authorization'已经定义”异常,大概是因为它与之前的 system.web 声明重叠。

我意识到有几种可能的解决方法:

如果不使用上述要点中的变通方法,是否有办法说服 Microsoft Identity 加载/account/不需要身份验证?

public void Configuration(IAppBuilder app)
{
    app.UseFileServer(new FileServerOptions() {
                DefaultFilesOptions = {DefaultFileNames = {"default.aspx"}}});
    app.UseCookieAuthentication(new CookieAuthenticationOptions
    {
        AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
        LoginPath = new PathString("/account/")
    });
}

<!--/account/web.config-->
<configuration>
    <system.web>
      <authorization>
        <allow roles="activeuser" />
        <deny users="*" />
      </authorization>
    </system.web>   
    <location path="Default.aspx">
        <system.web>
            <authorization>
                <allow users="*" />
            </authorization>
        </system.web>
    </location>
</configuration>

标签: c#webformsasp.net-identity

解决方案


投票结束我自己的问题作为重复。作为参考,这可以通过修改根 web.config 来解决,如下所示:

<urlMappings>
  <add url="~/account/" mappedUrl="~/account/default.aspx"/>
</urlMappings>

不知何故,我在调查这个问题时完全找不到https://stackoverflow.com/a/19154854/18192 。


推荐阅读