如何从Startup :: Configure

时间:2017-02-13 13:46:09

标签: c# cookies asp.net-core

在我的启动课程public void Configure(IApplicationBuilder app...)中,我以非常标准的方式设置我的Cookie身份验证:

app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
CookieName = cookieName,
//CookiePath = "",
AuthenticationScheme = cookieAuthSchemeName,
}); 

但我意识到我无法按照我想要的方式设置 CookiePath ,因为我不知道如何在此阶段访问主机服务器路径库。例如,如果我的服务器正在监听http://internal.net:5000/ myappbase /那么我可以让控制器执行一个操作,并且我想将我的cookie路径设置为 / myappbase / controller1 我没有做到,因为在那个阶段Startup::Configure,我无法获取有关服务器监听/ myappbase的信息。也许注入了一些我可以使用的东西,但我还没有找到它。

我尝试过的事情:

注入IHttpContextAccessor contextAccessor没有帮助。

我知道当我真正根据我在此处阅读的内容处理请求时,我可以轻松地在其他任何地方轻松实现这一目标:How can I get the root domain URI in ASP.NET?

我还可以看到,在CookieAuthenticationHandler的代码中,它根据请求获取此信息:

protected string CurrentUri
{
    get
    {
        return Request.Scheme + "://" + Request.Host + Request.PathBase + Request.Path + Request.QueryString;
    }
}

或者

var cookieOptions = new CookieOptions
{
    Domain = Options.CookieDomain,
    HttpOnly = Options.CookieHttpOnly,
    Path = Options.CookiePath ?? (OriginalPathBase.HasValue ? OriginalPathBase.ToString() : "/"),
};

但实际上,在Startup :: Configure中,我不知道该怎么做。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

ConfigureServices(IServiceCollection服务)方法中,添加:

Action

注意:创建cookie并将其发送到客户端之前,该cookie的路径将设置为Request.PathBase。