shiro vue 前后端分离中模拟登录遇到的坑

       系统采用jeeplus框架(ssm+redis+shiro+mongodb+redis),默认是做了JSP未做前后端分离,由于业务需要已经多终端使用的需求(H5、小程序等),需要实现前后端分离。但是由于需要同时保留原版的未做前后端分离的UI 和新版做了前后端分离的UI,所以采用单独提出一套接口做封装供前端VUE使用。

       原先使用时有一个业务场景及客户可以通过其它系统跳转到我们系统不需要登录,但是由于是其它客户系统不好做SSO加上工期紧,我们这次采用客户系统在登录前先发送一次请求同步用户信息到我们系统,然后我们进行模拟登录成功后产生一个token返回客户系统,系统拿到token后再次调用登录接口,我们系统验证token有效后完成用户登录。

       在前后端分离的框架前端采用了ant design vue版本,前端代码使用nginx做服务器,当客户系统需要登录时,有系统验证用户信息然后重定向到vue前端服务。遇到的问题是,当从后端tomcat容器重定向到nginx中,该死的url被添加了jessionid参数导致无法识别,显示404,返回参数如下:

http://demo.zzxes.com.cn/ems/#/;JSESSIONID=46ded843b141471c930d95cac006e3d9#/?expoid=7e37cf45f131428ab6b6ed0dcc3f02d4&excompanyType=2

  vue router 默认把#后面的参数当了路由地址,所以无法访问,于是开始漫长的旅程。

       方案一:

  既然是路由的问题,第一想法是把默认的HASH模式修改为HISTORY模式,于是得到一下返回结构:

http://demo.zzxes.com.cn/ems/;JSESSIONID=46ded843b141471c930d95cac006e3d9#/?expoid=7e37cf45f131428ab6b6ed0dcc3f02d4&excompanyType=2

  #的路由问题解决了,但是jessionid又被当成了请求地址,一样无法访问404,该死的404,方案一失败。

  方案二:

       有没有办法能把中间的那一坨jessionid去掉呢?这样就解决了问题了吗。通过百度、google终于发现nginx有rewrite这功能,于是修改配置文件,增加重写配置。

rewrite ^(.*);JSESSIONID)(.*)$ $request_uri/ems/?$args redirect;

  reload nginx,测试成功,方案二可行。

 

遗留问题,不确定方案二去掉jessionid是否会有其他隐藏问题,只能发现了在解决了。

       

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值