小程序后台微信用户注册

2017-11-14  本文已影响65人  9b559869875b

拜读了下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

上一篇下一篇

猜你喜欢

热点阅读