我在IIS反向代理(.NET Core 1.0.0)后面运行我的Kestrel服务器。它工作得很好,除了某些情况 - 例如在访问失败时被重定向到登录页面 - 导致用户被发送到http://localhost:8080/Account/Login
(Kestrel绑定的地址)而不是http://www.example.net/Account/Login
(反向代理地址)。
我知道我可以在Startup.cs
中配置IdentityOptions,其中还包括设置LoginPath的功能,如:
services.Configure<IdentityOptions>(options =>
{
options.Cookies.ApplicationCookie.ExpireTimeSpan = TimeSpan.FromDays(1);
options.Cookies.ApplicationCookie.SlidingExpiration = true;
options.Cookies.ApplicationCookie.LoginPath = PathString("/Admin/Login");
});
不幸的是,我无法设置绝对路径。
我还研究了检查和重写每this response网址的可能性,但我觉得这可能不是正确的方法,但我没有任何直接的理由说明原因。< / p>
app.Use(async (context, next) =>
{
var baseUri = Configuration["Site:BaseUri"];
if (baseUri.Contains(context.Request.Host.ToString()))
{
await next();
}
else
{
var newUri = $"{context.Request.Scheme}://{baseUri}{context.Request.Path}{context.Request.QueryString}";
context.Response.Redirect(newUri);
}
});
除此之外,我确实发现this link from the FunnelWeb project基本上看起来像我想做的事情(尽管,对于旧版本的ASP.NET)。
我很感激任何指导我指出正确的方向。