C# asp.net core 2身份验证让我在cookie过期之前登录

C# asp.net core 2身份验证让我在cookie过期之前登录,c#,authentication,.net-core,asp.net-identity,C#,Authentication,.net Core,Asp.net Identity,我的身份验证设置似乎在超过浏览器会话或其他时间(大约30分钟)后忽略.AspNetCore.identity.Application cookie。我可以将应用程序cookie过期时间设置为较短的时间段,如1分钟,这将按预期工作,但当我尝试10小时之类的时间时,其他时间会强制注销30分钟。我不知道是哪个部分导致了注销。 我通过检查RememberMe将IsPersistant设置为true。我可以在浏览器中看到cookie,expires/Max Age设置为10小时,并且在登录时不会消失 看看

我的身份验证设置似乎在超过浏览器会话或其他时间(大约30分钟)后忽略.AspNetCore.identity.Application cookie。我可以将应用程序cookie过期时间设置为较短的时间段,如1分钟,这将按预期工作,但当我尝试10小时之类的时间时,其他时间会强制注销30分钟。我不知道是哪个部分导致了注销。 我通过检查RememberMe将IsPersistant设置为true。我可以在浏览器中看到cookie,expires/Max Age设置为10小时,并且在登录时不会消失

看看这个(以及许多类似的问题)

用于ajax操作

Startup.cs

   services.AddIdentity<EntityFramework.ApplicationUser, IdentityRole>()
                .AddEntityFrameworkStores<ApplicationDbContext>()
                .AddDefaultTokenProviders();

   services.Configure<IdentityOptions>(options =>
            {
                //password options
                options.Password.RequiredLength = 8;
                options.Password.RequiredUniqueChars = 3;

                //Lockout options
                options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);
            });

services.ConfigureApplicationCookie(options =>
            {
                //timeout span
                options.Cookie.Expiration = TimeSpan.FromHours(10);
                options.ExpireTimeSpan = TimeSpan.FromHours(10);
                options.Cookie.MaxAge = TimeSpan.FromHours(10);
                options.LoginPath = "/Account/Login";

                //https://stackoverflow.com/questions/55344665/handling-session-timeout-with-ajax-in-net-core-mvc
                options.Events.OnRedirectToLogin = (context) =>
                {
                    //identify if Ajax (json request)
                    if (context.Request.ContentType != null && context.Request.ContentType.Contains( "application/json"))
                    {

                        context.HttpContext.Response.StatusCode = 401;
                    }
                    else
                    {
                        context.Response.Redirect(context.RedirectUri);
                    }
                    return Task.CompletedTask;
                };
            });
   services.AddAuthentication(options =>
            {
                options.DefaultScheme = IdentityConstants.ApplicationScheme;
            })


添加一些断点或添加日志记录,以确定执行哪些代码来缩小范围。例如,您是否确定内容类型始终是小写的
application/json
,而不是类似于
application/json
?此外,我会将cookie的滑动过期设置为true。每次登录时,过期时间将重置为配置的值。对此问题有任何答案吗?添加一些断点或添加日志记录,以确定执行哪些代码来缩小过期时间。例如,您是否确定内容类型始终是小写的
application/json
,而不是类似于
application/json
?此外,我会将cookie的滑动过期设置为true。每次登录时,过期时间将重置为配置值。对此问题有任何答案吗?
await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: false);