.net core cookie授权给非服务器域名的网站时可能无法正常删除的解决办法 ...

打印 上一主题 下一主题

主题 1913|帖子 1913|积分 5739

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  背景先容:.net core框架,API服务器域名是a.com, 服务器需要通过cookie授权给网站b.com域名并设置了授权域名为a.com。 当你想退出时,在网站b.com利用js清算了本域名下的所有cookie后,刷新浏览器cookie列表也确实看到本域名下没有cookie了。 这时再利用另一个账号登录后会发现照旧原用户的登录信息。
   
      原因分析:上面已经提到了,授权API服务器设置了授权cookie的域名为a.com,如果网站b.com仅清算本域名下的cookie自然无法删除a.com的授权cookie(浏览器不允许跨域操纵或访问cookie)。
 
      解决方案:  1.  调用跟授权cookie域名同源的API服务器的退出接口。   如调用: a.com/logout。  通过同源域名下的服务器来删除授权cookie,问题正常解决。
                          2. 设置每次调用登录接口时,不判断用户是否已授权,直接返回新的授权cookie。    通过强制覆盖客户端授权Cookie处理,问题正常解决。
 
 这里把cookie跨域授权的核心示例展示一下,供参考:
  1. services.AddAuthentication().AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options =>
  2. {
  3.     options.LoginPath = "/admin/login"; //未登录重定向路径
  4.     options.LogoutPath = "/login/logout";  //未授权时重定向路径
  5.     options.ExpireTimeSpan = TimeSpan.FromDays(1);  //授权有效期
  6.     options.Cookie.Domain = CONST.DEFAULT_DOMAIN;   //Cookie存储域名
  7.     options.Cookie.Name = "AdminUserToken";      //Cookie名称
  8.     options.Cookie.Path = "/";
  9.     options.Cookie.IsEssential = true; //是否强制存储cookie,即使用户不同意使用cookie,也可以强制存储.
  10.     options.Cookie.HttpOnly = true;    //设置是否允许客户端JS可访问授权cookie:  true=不允许
  11.     options.Cookie.SameSite = SameSiteMode.None;    //设置跨域时设置为:None
  12.     options.Cookie.SecurePolicy = CookieSecurePolicy.Always; ////设置跨域时设置为:CookieSecurePolicy.Always:确保Cookie通过 HTTPS 发送
  13.     options.Events = new CookieAuthenticationEvents
  14.     {
  15.         // 重写 OnRedirectToLogin 事件,防止重定向,返回 401
  16.         OnRedirectToLogin = context =>
  17.         {
  18.             if (context.Request.Path.StartsWithSegments("/user") && context.Response.StatusCode == 200)
  19.             {
  20.                 context.Response.StatusCode = 401;
  21.             }
  22.             return Task.CompletedTask;
  23.         }
  24.     };
  25. });
复制代码
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

麻花痒

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表