如何将Microsoft Identity设置为尊重默认文件名



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

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

我尝试使用UseFileServer设置DefaultFileNames以包含"default.aspx",但这似乎没有帮助。我还尝试使用path="." inheritInChildApplications=false"而不是path="default.aspx",但这导致了一个"Config section'system.web/authorification'ready defined"异常,可能是因为它与以前的system.web声明重叠。

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

  • 在路径中容忍default.aspx
  • 使用MapPageRoutes而不是依赖默认页面
  • 将web.config设置为允许/account,然后使用位置路径手动禁用每个子目录

是否有一种方法可以说服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>

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

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

不知怎么的,我完全找不到https://stackoverflow.com/a/19154854/18192在调查此问题时。

相关内容

  • 没有找到相关文章

最新更新