美文网首页
小程序后台微信用户注册

小程序后台微信用户注册

作者: 9b559869875b | 来源:发表于2017-11-14 19:47 被阅读65次

    拜读了下skyvow大神的m-mall-admin后台,

    https://github.com/skyvow/m-mall-admin

    对于服务器端微信用户注册和登录一直没有搞明白逻辑,看了几遍代码,总算有点概念了

    代码在controllers/user.js

    wechatSignUp(req, res, next) 

    这个函数先把用户名设置成null,密码设置成123456进行md5加密后的字符串,

    然后getSessionKey(code), 用code换取session_key

    关于code 换取 session_key这个事情在小程序的开发文档里有说明

    https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html#wxloginobject

    这是一个 HTTPS 接口,开发者服务器使用登录凭证 code获取 session_key 和 openid。

    session_key 是对用户数据进行加密签名的密钥。为了自身应用安全,session_key 不应该在网络上传输

    返回参数:

    openid    用户唯一标识

    session_key    会话密钥

    所以我们可以看到wechatSignUp函数体里有用到

    doc.openid 就是getSessionKey返回结果的用户唯一标识openid

    开发文档里又写道:错误时返回JSON数据包(示例为Code无效){"errcode":40029,"errmsg":"invalid code"}

    所以函数体里可见到 doc.errcode, doc.errmsg 就是这个错误代码和错误信息了

    如果返回结果里成功拿到了用户的openid

    那就把body.username 设置成这个用户唯一标识 doc.openid

    然后在后台数据库的user表里查找是不是已经有注册过这个用户 this.model.findByName(doc.openid)

    .then(doc 如果doc不为null,说明用户名已经存在,就不要重复注册了嘛,

    不然就代码接着往下走,用openid在后台数据库的user表里注册一个新用户,

    用户名是openid,密码是123456

    if (doc && doc._id) return res.tools.setJson(0, '注册成功', {

    token: res.jwt.setToken(doc._id)

    注册成功,并且设置一个token

    相关文章

      网友评论

          本文标题:小程序后台微信用户注册

          本文链接:https://www.haomeiwen.com/subject/byofvxtx.html