微信 JS SDK 签名算法的意义

发布于 2022-09-01 05:45:15 字数 757 浏览 29 评论 0

微信 JS SDK 使用前需要签名,大致步骤:

  1. 使用 appidappsecrect 获取 access_token
  2. 使用 access_token 换取 js_ticket
  3. 使用 js_ticket, url 和一些变量来生成 signature

这三步按照官方文档都要求在服务器端进行,并且每次页面 url 变化都需要重新签名。

对于签名过程这么设计的原因,我有几个不解的地方,想请教一下大家的看法:

  1. 三步都需要在服务端进行,那么 js_ticket 的作用是什么?我能想到的可能用处是今后有效期可以和 access_token 不一样长;
  2. 微信文档说:“对于变化url的SPA的web app可在每次url变化时进行签名”,是否说明这种情况下,签名的步骤其实是需要将js_ticket暴露在前端完成的(和服务端进行的要求不符)?
  3. 微信让每个应用配置3个js安全域名,是希望根据域名进行授权,这个很好理解,即使我拿到了其他应用的签名,我也不能在自己的页面使用。但相同域名下的权限应该是相同的,那 SPA 还需要根据当前完整 url 来生成签名的意义是什么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

故事还在继续 2022-09-08 05:45:15
  1. js_ticket和access_token应该是权限不同
    在其他业务逻辑刷新access_token时 如果js_ticket没过期 则不影响jssdk的调用 文档也提到获取js_ticket的api次数有限

  2. SPA的话 是指#前的url变动 -> http://segmentfault.com/q/1010000002520634/a-1020000002531131

↘紸啶 2022-09-08 05:45:15

我的做法是:1、2步在服务端完成,因为有取access_token和js_ticket是有限制的,每天2000次,而access_token、js_ticket的有效期是2小时,如果能在服务器端记录下有效期,当过了有效期再去取。其实一天24/2=12次去微信请求就足够了。js_ticket到手后,前端页面就用当前URL+js_ticket生成signature。否则你的2000次很快就用光了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文