背景:
项目基于微信H5开发,微信内嵌浏览器在访问项目时,可以分享和复制链接,因为连接中携带了openId,导致系统权限失效,相当于别人拿着你家的钥匙进你家门一样。
解决思路:
在微信H5的入口请求中,增加携带openId 的cookie,前端全局js在页面加载时获取cookie ,如果没有,或者 cookie中的openId 与 URL携带的openId不一致,说明是分享或者复制的连接,直接跳转到关注公众号页面。
实现过程中的坑:
以前一直以为只要域名相同,重定向的cookie 就能保存到浏览器。但前端一直获取不到cookie,后来发现原来cookie 除了domain 还有path 属性,只要把path 值设置为 “/” 就好了。
Cookie cookie = new Cookie("token",Base64Utils.encodeToString(token.getBytes()));
cookie.setPath("/");