如何设置Microsoft身份以遵守默认文​​件名

时间:2018-11-27 17:36:54

标签: c# webforms asp.net-identity

我正在尝试从表单身份验证/成员身份迁移到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声明重叠。 / p>

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

  • 容忍路径中的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>

1 个答案:

答案 0 :(得分:0)

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

password = Hashing
        .sha256()
        .hashString(input, StandardCharsets.UTF_8)
        .toString()
        .toUpperCase();

在调查此问题时,我完全无法找到https://stackoverflow.com/a/19154854/18192