迁移到.net core 2.0会话后停止正常工作

时间:2017-10-17 14:22:32

标签: c# .net session asp.net-core

我在.NET 1.0中编写应用程序,然后将其更新到2.0版本后,我的会话停止了工作。

我在Startup.cs中的设置:

services.AddDistributedMemoryCache();
services.AddSession(options =>
{
    options.IdleTimeout = TimeSpan.FromMinutes(15);
    options.Cookie.HttpOnly = true;
});

...

app.UseSession();

我在我的控制器上设置会话:

HttpContext.Session.SetString(SessionKey, data);

之后我重定向到包含angular:

的静态文件
return Redirect($"~/index.html?test={test}");

该文件位于wwwroot文件夹中。

当我使用angular从我的应用程序中获取数据时:

$http.get(baseUrl + "/Configure/Refresh?test=" + test).then(handleSuccess, handleError("Error getting settings")

我在控制器操作中检查会话:

 _logger.LogInformation($"Session: {HttpContext.Session.GetString(SessionKey)}");

它是空白的。我不知道为什么 - 在更新之前,它工作正常。

1 个答案:

答案 0 :(得分:2)

好的,我发现了什么问题。默认情况下,更新会话后将SameSite设置为Lax。之前是没有。我将此值设置为Strict,并且一切正常。

services.AddSession(options =>
{
    options.IdleTimeout = TimeSpan.FromMinutes(15);
    options.Cookie.HttpOnly = true;
    options.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Strict;
});

文章:https://www.sjoerdlangkemper.nl/2016/04/14/preventing-csrf-with-samesite-cookie-attribute/