thinkPHP如何模仿微信的token?

用thinkPHP框架做项目如何模仿微信的token,做接口用的,防止别人通过接口,不断请求接口?

阅读 3.3k
3 个回答

客户端第一次请求接口的时候加密一个token返回给客户端,客户端每次请求把token带上

sha1(action_name) //action_name自行定义

总之token,可以反解密验证是自己发出去的即可

参照微信或支付宝的支付流程即可。
1、app端和服务端商议一个key,类似:key:abc。
2、确定请求接口参数,再额外加上时间戳的参数,然后排序参数,参数名ASCII码从小到大排序(字典序)。例如接口参数有: mobile:test和password:123456这两个,自己再加上个时间戳参数time:1497511947,然后这三个参数按照参数名来排序确定顺序
3、拼接参数,组合成“参数=参数值”的格式,类似上方组装为:mobile=test&password=123456& time=1497511947
4、将key拼接到最后,此时变成: mobile=test&password=123456& time=1497511947&key=abc
5、md5或其它方式加密上述的字符串,得到一个sign:加密后的字符串。
6、将mobile、password、time、sign做为最终要传递的参数通过接口给后台服务端。
7、服务端拿到参数后,先判断时间在2分钟左右(时间自己拿捏)才为有效数据,然后按照同样的上述规则计算出自己的sign,将其和参数传递过来的sign比较(统一大小写),如果正确就有效,否则无效。
基本上是这个步骤,可以根据情况适当变动,加时间戳是为了防止重放攻击,加密所有参数是为了防篡改。最好还是上https。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题