重定向后,存储在session域中的值,thymeleaf解析不了

最近在练习一个分布式项目,出了一个问题:
目的:把登录成功的数据放入session中,供页面上调用其中的信息
实现:handler中登录成功后使用重定向去一个页面。这个页面上使用的是thymeleaf解析的session域中的值。[[${session.loginMember.userName}]]
错误:Whitelabel Error PageThis application has no explicit mapping for /error, so you are seeing this as a fallback.Wed Jul 01 16:23:15 CST 2020There was an unexpected error (type=Internal Server Error, status=500).Exception evaluating SpringEL expression: “session.loginMember.userName” (template: “member-main” - line 64, col 131)

这个页面和handler在一个服务中,重定向是由mvc配置类的view-controller来执行的。但是存入session的值获取不到。随后我把重定向换成了转发,成功进入这个页面,并且能够获得到session中的值。非常让人费解,同一个工程内,重定向后session难道发生改变了?

答案是肯定的
原因:这是因为重定向的时候,我们的header发生了改变,导致这个问题
例如:我这个项目的zuul入口地址是www.crowd.com,打开后,进入默认页面,这时不管是点击进入注册还是进入登录页面,它的URL地址都是www.crowd.com/xxx/xxx/xxx,但进行重定向后,地址发生了改变,变成了登录和注册这个微服务ip地址+接口192.168.xx.xx/xxx/xxx/xxx,它的入口不再是zuul,所以页面上无法获取session的值。

重点:因为使用zuu时,我们需要在yml中配置相关的设置,其中zuul.sensitive-headers="*"表示:
在 Zuul 向其他微服务重定向时保持原本头信息(请求头、响应 头)

这个我配置我之前已经配置好了,但没有起作用,我也去查阅了一个网上资源,几乎全部都在说加zuul.sensitive-headers=“*”或者是使用zuul的过滤器…这些我都试过了,无法解决我这边的问题,最后我在yml文件中看zuul的相关配置时,发现了add-host-header=false,这个配置开启后解决的问题是:它涉及到一个请求头信息的配置,防止页面重定向后跳转到上游服务器上去,所以把这个配置开启后配合sensitive-headers就解决了请求头的问题

我使用的cloud版本是<version>Greenwich.SR2</version>这个版本add-host-header默认是关闭的,需要手动开启

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值