zoukankan      html  css  js  c++  java
  • 小程序登录,后台接口

    1. 通过wx.login 获取微信返回token:
      image
    2. 安装异步请求request包(和axios是同类)
      cnpm i request –S
      在小程序端通过wx.login获取code(在小程序端不要使用他,code是一次性的)
    3. 在后端需要请求微信官方的接口,把code和appid秘钥等等传给微信官方,等待微信官方返回openid。也就是用户身份信息
      image 

    4. 如果返回的字段带有  errcode:"40016",就是说明 wx.login返回的token已经过期:
      image
    5. 如果返回的是 openid, 则获取信息正确.
      前端微信用户登录即注册,所以在登录前需要判断有无此用户,如若无,则新增一位前台用户,再执行登录
       image
    6. 但是现在返回的openid是一个 明文的信息 ,  所以需要使用 jwt来加密token
      image
      此时的token已经被加密
    7. 代码:
    8. var express = require('express');
      var router = express.Router();
      var models = require('../../models')
      const request = require('request');// 用来请求接口
      var jwt = require('jsonwebtoken');// 加密
      
      router.post('/login',function(req,res,next){
          var code = req.body.code
          request.get({
              url:'https://api.weixin.qq.com/sns/jscode2session',
              json:true,
              qs:{
                  grant_type:'authorization_code',
                  appid:'wx4a9965771e11b4bd',
                  secret:'e94f1c12cb09e31bff0f12826f945b60',
                  js_code:code
              }
          },async(err,respose,data)=>{
              //  1. 判断data里面有没有 errcode,有就是token过期了,直接return
              if(data.errcode){
                  return res.json({success:false,msg:'code已过期'})
              }
              // 2.否则就  查询openid存不存在
              let user = await models.User.findOne({
                  where:{openid:data.openid}
              })
              // 3.如果openid不存在,就直接添加这个openid 和 普通权限
              if(!user){
                  user = await models.User.create({openid:data.openid,admin:0})
              }
              var token = jwt.sign({
                  user:{
                      id:user.id,
                      openid:data.openid,
                      admin:false
                  }
              },process.env.SECRET,{expiresIn:60 * 60 * 24 * 7})
              res.json({success:true,message:'登陆成功',token:token})
          })
      })
      
      module.exports = router;
  • 相关阅读:
    Linux关机命令详解
    这二个月都在失眠中。
    GMAIL绑定自己的域名MX解析出现错误
    又上火了。
    FTP命令
    怎样做反向域名解析?
    linux 一些常用到的命令。
    LINUX怎么换IP。
    关于 MOD 和 \ 选择
    WIN2000和WIN2003连备份机的疑问
  • 原文地址:https://www.cnblogs.com/cl1998/p/13166725.html
Copyright © 2011-2022 走看看