mongoDB,nodejs简易实现用户access_token验证

实现效果:

用户调用接口时鉴权,如果没有合法的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(),中间件向后传递