在我的启动课程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中,我不知道该怎么做。
任何帮助都将不胜感激。
答案 0 :(得分:1)
在 ConfigureServices(IServiceCollection服务)方法中,添加:
Action
注意:创建cookie并将其发送到客户端之前,该cookie的路径将设置为Request.PathBase。