2017-05-22 6 views
1

사용자가 사진을 찍어 데이터베이스로 보낼 수있는 응용 프로그램이 있습니다.데이터베이스에 디코딩 된 사용자 저장

토큰을 사용할 때마다 사용자가 로그인 할 때마다 (로그인 할 필요가없는 경우) 토큰을 얻습니다.

나는 지금 내가 제외한 모든 요청을 확인 할의 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); 
      }) 

     }); 
    } 
} 

답변

0

당신은 res.locals을 통해 전체 체인을 통해 어떤 상태 변수를 전달 할 수 있어야한다을 on res.locals here