我的问题是我无法为会话设置滑动到期配置。
在使用应用程序时,身份Cookie正在滑动并且没有过期,但是会话没有滑动,在IIS会话超时之后,该会话在更新自身,并且清除了我的会话数据。
这是我的启动代码:
public void ConfigureServices(IServiceCollection services)
{
// some other configurations..
services.ConfigureApplicationCookie(options =>
{
options.ExpireTimeSpan = TimeSpan.FromHours(6);
options.LoginPath = "/Auth/Login";
options.AccessDeniedPath = "/Dashboard";
options.LogoutPath = "/Auth/Logout";
options.SlidingExpiration = true;
options.Cookie.IsEssential = true;
});
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromHours(6);
options.Cookie.HttpOnly = true;
options.Cookie.IsEssential = true;
});
}
如何为会话的cookie设置滑动到期属性?
答案 0 :(得分:0)
您的问题有点含糊,但我认为您所说的“ IIS会话超时”实际上是应用程序池正在停止并重新启动。基于此,您可能会使用内存中会话存储,并且由于它是受进程限制的,因此当应用程序池运行时,您的会话将消失。
在后台,会话利用IDistributedCache
进行存储。缺省的提供程序是DistributedMemoryCache
。尽管有名称,但实际上并没有分发。它只是使用内存的IDistributedCache
的实现,但是仍然遭受任何基于内存的缓存的所有问题。
总之,您需要一个持久的分布式缓存解决方案,例如SQL Server或Redis。参见:https://docs.microsoft.com/en-us/aspnet/core/performance/caching/distributed?view=aspnetcore-2.2#establish-distributed-caching-services。
设置好之后,会话也将保持持久状态,仅在实际需要时才超时。