JDKBlog问题系列—博客系统接入API网关登入超时跳转的地址不是API网关地址而是真实IP


作者:空白

1. 问题描述

成功登入 比特科技博客后台,由于登入权限有过期机制,一段时间没操作后,登入状态就会过期。

登入成功的时候的url如下所示,地址是域名:bittechblog.com alt

但是过期后,跳转的登入节点url如下所示,地址是111.229.66.38,应该是域名才对。 alt

我的博客地址是部署在111.229.66.38主机上,但是是通过API网关bittechblog地址转发到111.229.66.38上的。

2. 分析定位问题

权限过期后就重定向到登入页面,因此要找权限拦截类。找到BaseInterceptor类的preHandle方法,定位到权限过期的重定向代码

        // 处理uri
        if (uri.startsWith("/admin") && !uri.startsWith("/admin/login") && null == user) {
            response.sendRedirect(request.getContextPath() + "/admin/login");
            return false;
        }

从上面可以知道重定向地址是request.getContextPath(),即我部署的111.229.66.38地址,所以导致了这个问题。

3. 解决问题

我们定位到问题是request.getContextPath(),那么我们不使用这个呗,因此地址我就配置在配置文件application.properties中,

//application.properties
contextPath=http://bittechblog.com

//拦截类中引用这个参数
@Value("${contextPath}")
private String contextPath ;

//统一转发到这个地址
// 处理uri
if (uri.startsWith("/admin") && !uri.startsWith("/admin/login") && null == user) {
   response.sendRedirect(contextPath+"/admin/login");
   return false;
}

测试后,完美解决!!!

实例代码-Github。

关注共图社,有更多惊喜。


alt

微信扫描二维码,关注共图社公众号"前言科技bot"
转载这篇文章需要标注作者和出处:空白-bittechblog
扫码或搜索:前沿科技
发送 290992
即可立即永久解锁本站全部文章