Spring Cloud整合Shiro 会话丢失错误

问题描述:项目上重写权限管理模块,整合Shiro做权限管理,调试过程发现登陆过后,调用需要授权接口出现异常:org.apache.shiro.authz.UnauthenticatedException,表示当前Subject未认证。查看请求发现Response的Header列表中没有Set-Cookie,即shiro定义的Cookie没有写入浏览器。而本地使用PostMan调试未报上述错误。

原因:项目中使用zuul作为网关,zuul的RibbonRoutingFilter接收到Response后进行了重新构建,本地调试因为直接调用微服务节点不经过网关,所以没有报错。

@Override
public Object run() {
   RequestContext context = RequestContext.getCurrentContext();
   this.helper.addIgnoredHeaders();
   try {
      RibbonCommandContext commandContext = buildCommandContext(context);
      ClientHttpResponse response = forward(commandContext);
      setResponse(response);
      return response;
   }
   catch (ZuulException ex) {
      throw new ZuulRuntimeException(ex);
   }
   catch (Exception ex) {
      throw new ZuulRuntimeException(ex);
   }
}

根据ZuulProperties去除敏感头部信息,默认为:

    private Set<String> sensitiveHeaders = new LinkedHashSet<>(
            Arrays.asList("Cookie", "Set-Cookie", "Authorization"));

修复方案:设置

zuul:
    sensitive-headers: "*"//或者置空

转载于:https://my.oschina.net/diagram/blog/1593661

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值