ASP.NET核心反向代理和IdentityOptions路径

时间:2016-08-25 18:54:28

标签: c# asp.net-core reverse-proxy

我在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.Pat‌​h}{context.Request.Q‌​ueryString}";
        context.Response.Redirect(newUri);
    }
});

除此之外,我确实发现this link from the FunnelWeb project基本上看起来像我想做的事情(尽管,对于旧版本的ASP.NET)。

我很感激任何指导我指出正确的方向。

0 个答案:

没有答案