当前位置:首页 > 实用技巧 >

cookie登录失败(cookie失效了请重新登录怎么解决)

来源:原点资讯(www.yd166.com)时间:2023-10-26 23:12:18作者:YD166手机阅读>>

介绍


如果我们项目使用了 Identity Server4的网站上使用HTTP时,用户将无法登录,因为Chrome在版本8x中进行了更改,当你在网站使用HTTP架构时,将会发生这种情况。其实主要是因为SameSite。

Google公司提出了一个不向后兼容的新标准草案。标准将默认模式更改为,并添加新条目以选择退出。 足以满足大多数应用程序 Cookie;但是,它会中断跨站点方案,如 OpenID 连接和 WS 联合身份验证登录。由于请求的流向不同,大多数 OAuth 登录不会受到影响。新参数会导致与实施先前草案标准的客户端(例如 iOS 12)的客户端的兼容性问题。Chrome 80 将包括更改。

如何解决它?

第一步

AbpZero 项目应用 XXX.XXX.Web.Mvc 在项目中创建一个扩展类。

using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; using System; namespace Microsoft.Extensions.DependencyInjection { public static class SameSiteCookiesServiceCollectionExtensions { /// <summary> /// 设置SameSite属性,在ASPNET Core 3.1 项目中 /// </summary> private const SameSiteMode Unspecified = (SameSiteMode)(-1); /// <summary> /// 配置cookie策略以正确设置SameSite属性 /// 适用于将未知值处理为“严格”的浏览器.确保您添加 /// <seealso cref="Microsoft.AspNetCore.CookiePolicy.CookiePolicyMiddleware" /> /// 发送任何Cookie之前进入管道! /// </summary> public static IServiceCollection ConfigureNonBreakingSameSiteCookies(this IServiceCollection services) { services.Configure<CookiePolicyOptions>(options => { options.MinimumSameSitePolicy = Unspecified; options.OnAppendCookie = cookieContext => CheckSameSite(cookieContext.Context, cookieContext.CookieOptions); options.OnDeleteCookie = cookieContext => CheckSameSite(cookieContext.Context, cookieContext.CookieOptions); }); return services; } private static void CheckSameSite(HttpContext httpContext, CookieOptions options) { if (options.SameSite == SameSiteMode.None) { var userAgent = httpContext.Request.Headers["User-Agent"].ToString(); if (DisallowsSameSiteNone(userAgent)) { options.SameSite = Unspecified; } } } /// <summary> /// 检查是否已知UserAgent将未知值解释为Strict。 ///<see cref="CookieOptions.SameSite" /> 属性设置为 <see cref="Unspecified" />. /// </summary> private static bool DisallowsSameSiteNone(string userAgent) { if (userAgent.Contains("Safari") && userAgent.Contains("Macintosh; Intel Mac OS X 10_14") && userAgent.Contains("Version/")) { return true; } // 判断 Chrome 50-69 版本, 这些默认为 SameSite=None if (userAgent.Contains("Chrome/5") || userAgent.Contains("Chrome/6")) { return true; } if (GetChromeVersion(userAgent) >= 80) { return true; } return false; } private static int GetChromeVersion(string userAgent) { try { return Convert.ToInt32(userAgent.Split("Chrome/")[1].Split('.')[0]); } catch (Exception) { return 0; } } } }第二步


在Startup 类中 ConfigureServices 方法添加配置

services.ConfigureNonBreakingSameSiteCookies();

在Startup类中 Configure方法中添加配置

app.UseCookiePolicy();

栏目热文

斗鱼改名字的验证码在哪里(起个好听的斗鱼tv昵称)

斗鱼改名字的验证码在哪里(起个好听的斗鱼tv昵称)

最近斗鱼知名满级神豪韩奕因为被封直播间一事,直接改名怒怼超管闹得沸沸扬扬,并且还闹出需要改名否则被冻结账号的问题,最终斗...

2023-10-26 23:06:36查看全文 >>

斗鱼名称忘了怎么解除(斗鱼怎样解除账号)

斗鱼名称忘了怎么解除(斗鱼怎样解除账号)

斗鱼游戏直播平台最近更新了一个新道具,这个道具就是改名卡,需要1万鱼丸就能兑换成功,之后就可以对斗鱼昵称进行修改了。这一...

2023-10-26 23:02:18查看全文 >>

斗鱼实名认证不了(斗鱼直播认证)

斗鱼实名认证不了(斗鱼直播认证)

虎牙、斗鱼等直播平台青少年保护模式流于形式新华网客户端3小时前 · 新华网官方账号江苏省消保委13日发布的消费调查报告显...

2023-10-26 23:34:08查看全文 >>

斗鱼验证码不成功怎么办(斗鱼验证码不弹出来怎么办)

斗鱼验证码不成功怎么办(斗鱼验证码不弹出来怎么办)

大王卡从腾讯大王卡一出现,我观望了很久,因为不知道这卡是否真的适合我使用,起初听说腾讯大王卡连qq和微信的视频和语音通话...

2023-10-26 23:07:55查看全文 >>

斗鱼无法输入验证码怎么回事

斗鱼无法输入验证码怎么回事

文 | 差评君转载自“差评”(ID:chaping321)已获得转载授权只要上网冲过浪的人,基本上就没有不知道验证码这玩...

2023-10-26 22:59:07查看全文 >>

cookie无效怎么解决(安卓获取cookie)

cookie无效怎么解决(安卓获取cookie)

摘要本文作者:崔庆才GitHub地址:https://github.com/Python3WebSpider/Cooki...

2023-10-26 22:54:12查看全文 >>

cookie验证失败怎么解决(cookie状态异常)

cookie验证失败怎么解决(cookie状态异常)

熬了两天,终于发现了问题所在,确实是服务器时区设置的不对,系统出现的问题就如下面所说的如出一辙:昨天项目迁移了测试服务器...

2023-10-26 23:00:57查看全文 >>

cookie安全问题及解决(允许第三方cookie是什么意思)

cookie安全问题及解决(允许第三方cookie是什么意思)

随着互联网技术的飞速发展,业务的开展方式更加灵活,应用系统更加复杂,也因此面临着更多的安全性挑战。安全测试是在应用系统投...

2023-10-26 22:50:06查看全文 >>

登录cookie超时(可以用超时时间设置删除cookie)

登录cookie超时(可以用超时时间设置删除cookie)

带大家详细了解下Cookie相关的知识!一、背景HTTP无状态:服务器无法知道两个请求是否来自同一个浏览器,即服务器不知...

2023-10-26 22:54:03查看全文 >>

cookie怎么验证用户身份(cookie登录怎么操作)

cookie怎么验证用户身份(cookie登录怎么操作)

在 Web 应用程序中,Cookie-Session 是一种标准的身份验证方法。饼干,也被称为“sweet cookie...

2023-10-26 23:19:58查看全文 >>

文档排行