【发布时间】:2019-04-29 12:28:12
【问题描述】:
我正在尝试从表单身份验证/成员身份迁移到 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 声明重叠。
我意识到有几种可能的解决方法:
- 在路径中容忍
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>
【问题讨论】:
标签: c# webforms asp.net-identity