Asp.net core Asp net core 3.1会话永不过期
我已经尝试了在StackOverflow上找到的所有东西,但仍然无法管理会话(内容)自动过期 我试过:Asp.net core Asp net core 3.1会话永不过期,asp.net-core,asp.net-core-3.1,Asp.net Core,Asp.net Core 3.1,我已经尝试了在StackOverflow上找到的所有东西,但仍然无法管理会话(内容)自动过期 我试过: 其他堆栈溢出链接很少 我不在ajax调用中访问会话数据(set,get),因此这不能自动增加会话过期时间 在旧的AspNet MVC中,它是如此简单/琐碎-立即按预期工作 我所做的一切我将自定义登录(数据)存储到会话中,并期望会话在用户不活动20分钟后停止。但这种情况从未发生过 有什么想法吗 编辑:Cookies lb_commonator=ffffffff0972280045525
- 其他堆栈溢出链接很少
lb_commonator=ffffffff0972280045525d5f4f58455e445a4a423660; crowd.token_key=7qN9z4UYR3tCjYdronwmOw00; .AspNetCore.Antiforgery.tYkxYH7Bg6I=CfDJ8OahW8JbNMdPv78xOmnUC6BtivuFvWy4RhYaN0oRtiUvkLpVtHLxgQaQOS1RTNqT8E0LaobeaNdLIhhoy4z4qSJleqiK2QJTWEptEDFAITNCTdh03AIqcd0mBL0FZeFcr5GalTfqiNahST7eUL7Wnpg; .AspNetCore.Session=CfDJ8OahW8JbNMdPv78xOmnUC6Cwi2HZVPs93%2Bohf8c%2BvQ1hWZVHeu54cwkg8PND41KXN1F%2BeAOSnTnkiT3RAGb3mPQjLRMpcq1x9f5KFrgegRRoEDHx%2FgEknhSOo8yCfKp1srlrzTWUtpUF8tsFKn1JwPLI9fHT77SGscSkTMrsueYr
编辑2(IdleTimeout和ExpireTimeSpan完全无效):
编辑3:
编辑:
app.Use(async (context, next) =>
{
string sessionCookie;
if (/*add here expiration check &&*/ context.Request.Cookies.TryGetValue("SessionCookieName", out sessionCookie))
{
context.Response.Cookies.Append("SessionCookieName", sessionCookie, new CookieOptions
{
MaxAge = TimeSpan.FromSeconds(10),
HttpOnly = true,
SameSite = SameSiteMode.Lax,
Path = "/"
});
}
await next.Invoke();
});
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromSeconds(10);
});
它将在10秒钟内使您的会话数据无效(cookie可能仍处于活动状态),并为会话数据提供滑动过期。您能在浏览器中提供会话cookie属性吗?是的,我会,明天。我是指开发人员工具的属性]()经过一些测试,该会话似乎在(默认)20分钟后正常过期。我只是无法更改默认时间(20分钟)。我添加了cookie expires信息的屏幕截图。正如在回答的代码块中提到的,当您不设置options.cookie.MaxAge时,您的cookie将是会话(图片中的第5列)。只有当你关闭浏览器时它才会过期(我在opera上遇到了一些问题)。如果要设置options.Cookie.MaxAge=TimeSpan.FromSeconds(10);-它将在10秒后过期。但如果您重复使用会话数据的查询,将设置新的cookie。如果cookie过期,请使用以下配置并在开发工具中跟踪:``services.AddSession(options=>{options.cookie.MaxAge=TimeSpan.FromSeconds(1);});至于方法配置应用程序okie-它只会影响身份验证Cookies谢谢你的想法。我试试看!IInar,设置最大年龄有效,但滑动过期无效?即使我在MaxAge过期时间跨度内读取/写入会话。
app.Use(async (context, next) =>
{
string sessionCookie;
if (/*add here expiration check &&*/ context.Request.Cookies.TryGetValue("SessionCookieName", out sessionCookie))
{
context.Response.Cookies.Append("SessionCookieName", sessionCookie, new CookieOptions
{
MaxAge = TimeSpan.FromSeconds(10),
HttpOnly = true,
SameSite = SameSiteMode.Lax,
Path = "/"
});
}
await next.Invoke();
});
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromSeconds(10);
});