사용자가 사진을 찍어 데이터베이스로 보낼 수있는 응용 프로그램이 있습니다.데이터베이스에 디코딩 된 사용자 저장
토큰을 사용할 때마다 사용자가 로그인 할 때마다 (로그인 할 필요가없는 경우) 토큰을 얻습니다.
나는 지금 내가 제외한 모든 요청을 확인 할의 JWT 인증을 할 this 튜토리얼을 따라 (/ 로그인/회원 가입), 난 그냥 사용자 이름을 저장하고 (즉, 토큰 및 사용자 정보를 얻기 위해 그것을 디코딩의 독특한 너무 괜찮아).
그래서 내가/꽃? flowerName (무작위 경로)에 라우팅 오전이 경로에 내가 등록을 만들고 내 데이터베이스에 일부 데이터를 저장하고 싶지만 그 전에 내가 확인 미들웨어를 입력해야합니다 허가.
이 내 미들웨어 :
var jwt = require('jsonwebtoken');
var jwtConfig = require('../config/jwt');
module.exports = function(req, res, next) {
console.log("entered");
// check header or url parameters or post parameters for token
var token = req.body.token || req.query.token || req.headers['x-access-token'];
console.log(req.headers['x-access-token']);
// decode token
if (token) {
// verifies secret and checks exp
jwt.verify(token,jwtConfig.secret, function (err, decoded) {
if (err) {
return res.json({ success: false, message: 'Failed to authenticate token.' });
} else {
console.log("HEREE");
// if everything is good, save to request for use in other routes
req.decoded = decoded;
console.log(req.decoded);
next();
}
});
} else {
// if there is no token
// return an error
return res.status(403).send({
success: false,
message: 'No token provided.'
});
}
}
내 문제는 내가 어떻게 내 미들웨어에 대한 사용자 ID를 가져온 다음 나의 다음 경로에 저장할 수있다? 물마루를 다음 통과 할 수 있습니까? like next (userID) ???? 그러면 어떻게 매개 변수를 얻을 수 있습니까?
내가 레지스터에 저장하는 곳입니다 : 당신이 세부 사항을 찾을 수 있습니다 즉,
res.locals.decoded = decoded;
next();
을
var express = require('express');
var User = require('../models').User;
var Foto = require('../models').Foto;
var router = express.Router();
var jwt = require('jsonwebtoken');
var fs = require('fs');
var fsPath = require('fs-path');
module.exports = {
sendPicture: function (req, res,next) {
var bitmap = new Buffer(req.body.base64, 'base64');
var dummyDate = "25/04/14-15:54:23";
var lat = req.params.lat;
var lon = req.params.lon;
var alt = req.params.alt;
var path = __dirname + "/../public/images/" + req.params.flowerName + "/example3.png";
var fotoPath = ""
var userId = 1;
console.log(lat);
console.log(lon);
console.log(alt);
console.log(req.query.token);
fsPath.writeFile(path, bitmap, function (err) {
if (err) {
console.log(err.stack);
return err;
}
Foto.create({
image: path,
userId: userId
}).then(function() {
return res.status(200).json({ message: "foto created" });
}).catch(function(err){
console.log(err.stack);
})
});
}
}