欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

.NET Core中Cookie授权模式下,授权失效后的默认跳转到HTTP登录页面的解决方案

最编程 2024-08-08 09:55:51
...
//修改Cookie验证里面的默认设置 Action<CookieAuthenticationOptions> cookieAuthenticationOptionsAction = o => { o.LoginPath = this.Configuration["COOKIE_LOGIN_URL"]; //登录路径:这是当用户试图访问资源但未经过身份验证时,程序将会将请求重定向到这个相对路径。 o.LogoutPath = this.Configuration["COOKIE_LOGOUT_URL"]; o.AccessDeniedPath = this.Configuration["COOKIE_DENIED_URL"]; o.ReturnUrlParameter = this.Configuration["COOKIE_RETURN_URLPARAMETER"] ?? "returnUrl"; double timeOut = Helper.TypeParseHelper.StrToDouble(this.Configuration["COOKIE_TIMEOUT"] ?? "2880"); o.ExpireTimeSpan = System.TimeSpan.FromSeconds(timeOut); o.Cookie.HttpOnly = true; o.Cookie.Name = this.Configuration["COOKIE_NAME"]; //o.Cookie.Domain = this.Configuration["COOKIE_DOMAIN"]; o.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Lax; //宽松模式, o.Cookie.Path = "/"; o.Cookie.IsEssential = Convert.ToBoolean(this.Configuration["COOKIE_ISESSENTIAL"] ?? "true"); //是否强制存储cookie,注意,也就是当用户不同意使用cookie的时候,你也可以通过设置这个属性为true把cookie强制存储. o.SlidingExpiration = true; //Cookie可以分为永久性的和临时性的。 临时性的是指只在当前浏览器进程里有效,浏览器一旦关闭就失效(被浏览器删除)。 永久性的是指Cookie指定了一个过期时间,在这个时间到达之前,此cookie一直有效(浏览器一直记录着此cookie的存在)。 slidingExpriation的作用是,指示浏览器把cookie作为永久性cookie存储,但是会自动更改过期时间,以使用户不会在登录后并一直活动,但是一段时间后却自动注销。也就是说,你10点登录了,服务器端设置的TimeOut为30分钟,如果slidingExpriation为false,那么10:30以后,你就必须重新登录。如果为true的话,你10:16分时打开了一个新页面,服务器就会通知浏览器,把过期时间修改为10:46。 更详细的说明还是参考MSDN的文档。 o.Events = new CookieAuthenticationEvents { OnSignedIn = context => { this.Logger?.LogTrace("{0} - {1}: {2}", DateTime.UtcNow, "OnSignedIn", context.Principal.Identity.Name); return Task.CompletedTask; }, OnSigningOut = context => { this.Logger?.LogTrace("{0} - {1}: {2}", DateTime.UtcNow, "OnSigningOut", context.HttpContext.User.Identity.Name); return Task.CompletedTask; }, OnValidatePrincipal = context => { this.Logger?.LogTrace("{0} - {1}: {2}", DateTime.UtcNow, "OnValidatePrincipal", context.Principal.Identity.Name); return Task.CompletedTask; }, }; }; #endregion //默认登录Cookie验证方式 services.AddDefaultAuthenticationWithProtectedCookie(cookieAuthenticationOptionsAction);