2017-05-22 11 views
1

私は、ユーザーが写真を撮ってデータベースに送ることができます。データベースにデコードされたユーザーを保存する

ユーザーがログインするたびに、すべてのトークンがトークンを取得できます(ログインする必要はありません)。

私は今、私はそのトークン(/登録/ログイン)を除くすべてのリクエストを確認し、ユーザーの情報を取得するために、それを解読したい(私はちょうどその、ユーザー名を保存しています、JWT認証を行うためのthisチュートリアルに従っそれほどユニークではない)。

私は/ flower?flowerName(random route)にルーティングしていると想像してください。このルートでは、登録を作成してデータベースにいくつかのデータを保存したいと思いますが、前に言いましたように、許可。

は、これが私のミドルウェアです:

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(ユーザーID)??? どのようにしてパラメータを取得できますか?

これは私がレジスタ保存場所です:

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

関連する問題