实现效果:
用户调用接口时鉴权,如果没有合法的access_token则不允许接入,抛出401
实现要点:
mongoDB的简单操作,async与await
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| var db = require('../db') var express = require('express') var router = express.Router() var utils = require('../utils')
var checkLogin = async function(req, res, next) { try{ if (await checkAccessToken(req.query.userId, req.query.access_token)) { next() } else { res.status(401) res.send() } }catch(e){ console.error(e) res.status(500) res.send() }
} module.exports = checkLogin;
async function checkAccessToken(userId, accessToken) { if (!db) { console.error("DataBase error") } else { var userInfo = await db.user.findOne({ userId: userId }).exec() return userInfo.access_token === accessToken } }
|
mongoDB中,使用db.xx.find读出的是数组,需要用[0]或者findOne
mongoDB的读取为异步过程,可以使用async await等待异步回调
在处理时如果不使用res.send而直接调用next(),中间件向后传递