谷粒商城实战笔记-问题记录-首页没有显示用户名-跨域session问题

本文主要是介绍谷粒商城实战笔记-问题记录-首页没有显示用户名-跨域session问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一,首页无用户信息
  • 二,定位
  • 三,两个问题
    • 1,跨域名session共享
    • 2,分布式服务跨服务共享问题
  • 问题记录
    • 解决方案

一,首页无用户信息

在这里插入图片描述
谷粒商城首页,点击超链接您好,请登录,正常情况下应该跳转到Auth模块的login页面,登录成功后,会重定向到首页,超链接您好,请登录应该替换为用户名。

但是实际开发过程中出现了这样一个问题,登录成功后,超链接您好,请登录未被替换,再次点击这个超链接,不会跳转到登录界面,说明后台认为已经登录成功,直接重定向到首页了,但是首页没有拿到用户信息。

F12查看Application信息,也没有发现sessioncookie信息。

在这里插入图片描述

二,定位

梳理登录流程,看看问题可能出现在哪个环节。

  • 首页点击超链接您好,请登录
  • 跳转到auth.gulimall.com/login.html,这里很关键,商城用户认证模块的域名和首页域名不一致
  • 认证模块完成用户验证后,将用户信息保存在session
  • auth模块的前端页面login.htmlsession信息保存在cookie中,注意是保存在域名auth.gulimall.com
  • 重定向到首页,首页的域名是gulimall.com,所以不会携带cookie信息,首页后端拿不到用户信息,无法渲染页面

解释问题原因

  • 登录功能是两个模块协同完成的,登录模块完成登录,在域名auth.gulimall.com下保存cookie
  • 用户信息保存在认证服务的session中,首页模块的前端拿不到cookie,及时拿到了cookie,也拿不到session,因为session保存在auth认证服务的内存中,没有保存在首页所在的商品服务内存中,取不到用户信息。

下图可以看到auth.gulimall.com下是有cookie保存的。

在这里插入图片描述

三,两个问题

1,跨域名session共享

父域名获取不到子域名的cookie,这个可以在后台定制cookie,把域名的cookie设置为父域名。

				Cookie cookie = new Cookie("JSESSIONID", session.getId());cookie.setPath("/");cookie.setDomain("gulimall.com");servletResponse.addCookie(cookie);

注意,cookienamedomainpath是非空的信息。

这样设置之后,在首页就能看到父域名有cookie信息了。

在这里插入图片描述

即便如此,首页在渲染时仍然拿不到用户信息,因为用户session信息保存在auth任务服务的内存中,首页所在的product服务是访问不到的。

还必须解决跨服务session共享问题。

2,分布式服务跨服务共享问题

参考谷粒商城实战笔记-227-商城业务-认证服务-SpringSession整合
谷粒商城实战笔记-228-商城业务-认证服务-自定义SpringSession完成子域session共享

问题记录

上面的问题解决后,登录成功后,首页还是不显示用户名。

原因是auth模块配置了json序列化方式,但是product模块没有配置。

解决方案

把auth模块的配置类copy到product模块即可。

在这里插入图片描述

@Configuration
public class GulimallSessionConfig {@Beanpublic CookieSerializer cookieSerializer() {DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();//放大作用域cookieSerializer.setDomainName("gulimall.com");cookieSerializer.setCookieName("GULISESSION");return cookieSerializer;}@Beanpublic RedisSerializer<Object> springSessionDefaultRedisSerializer() {return new GenericJackson2JsonRedisSerializer();}}

这篇关于谷粒商城实战笔记-问题记录-首页没有显示用户名-跨域session问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1094556

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

豆包 MarsCode 不允许你还没有女朋友

在这个喧嚣的世界里,爱意需要被温柔地唤醒。为心爱的她制作每日一句小工具,就像是一场永不落幕的浪漫仪式,每天都在她的心田播撒爱的种子,让她的每一天都充满甜蜜与期待。 背景 在这个瞬息万变的时代,我们都在寻找那些能让我们慢下来,感受生活美好的瞬间。为了让这份浪漫持久而深刻,我们决定为女朋友定制一个每日一句小工具。这个工具会在她意想不到的时刻,为她呈现一句充满爱意的话语,让她的每一天都充满惊喜和感动

好题——hdu2522(小数问题:求1/n的第一个循环节)

好喜欢这题,第一次做小数问题,一开始真心没思路,然后参考了网上的一些资料。 知识点***********************************无限不循环小数即无理数,不能写作两整数之比*****************************(一开始没想到,小学没学好) 此题1/n肯定是一个有限循环小数,了解这些后就能做此题了。 按照除法的机制,用一个函数表示出来就可以了,代码如下

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

购买磨轮平衡机时应该注意什么问题和技巧

在购买磨轮平衡机时,您应该注意以下几个关键点: 平衡精度 平衡精度是衡量平衡机性能的核心指标,直接影响到不平衡量的检测与校准的准确性,从而决定磨轮的振动和噪声水平。高精度的平衡机能显著减少振动和噪声,提高磨削加工的精度。 转速范围 宽广的转速范围意味着平衡机能够处理更多种类的磨轮,适应不同的工作条件和规格要求。 振动监测能力 振动监测能力是评估平衡机性能的重要因素。通过传感器实时监

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在