网关登录与web前端本地开发
场景描述:管理后台和测试环境等服务部署在内网,访问这些资源需要网关验证访问权限;在线上访问这些资源时,会自动跳转要求网关登录,登录完成再重新跳回来。在本地开发时网关拒绝登录跳转。
- 流程分析:在访问需要网关验证的资源时,请求会在cookie中携带权限token,如果token有效,则直接访问,无效则网关响应302跳转至登录页,登录完成后,跳转至与请求同域的地址并在cookie中设置新的token,再重定向回访问的请求,在此设置的cookie只有同域(或子域)可使用;
- 解决思路:
- 如果在本地开发,使用127.0.0.1或者localhost域名等,因为与请求资源不同域也不是子域,所以不会携带其cookie,也不被网关准许跳转登录;
- 所以在本地开发时,需要通过网关验证就需要携带与资源同域的cookie;
- 这要求网关在设置cookie时,允许子域也可以使用,(设置cookie时不指定域名 默认就是可以子域可用的),格式为
.xx.com
; - 再通过修改hosts文件 解析一个子域名映射到
127.0.0.1
,如sub.xx.com
;然后通过访问子域名+开发服务端口如sub.xx.com:8080
,就可以实现本地开发时访问需要网关验证的资源了。