[英]Access req.user to save id to mongoDB
我目前在弄清楚如何访问 req.user 时遇到问题,以便我可以获取登录的用户 ID 并将其与他们保存在网页上的项目一起保存。 这样,当他们加载网页时,他们只会得到他们的项目。 我知道我可以访问 req.user 的唯一地方是我的 \/router\/auth.js 文件。 我想找出一种在不同的路由器文件中访问它的方法。
路由器\/auth.js<\/strong>
const express = require('express');
const passport = require('passport');
const bodyParser = require('body-parser');
const jwt = require('jsonwebtoken');
const config = require('../config');
const router = express.Router();
const createAuthToken = function (user) {
return jwt.sign({ user }, config.JWT_SECRET, {
subject: user.username,
expiresIn: config.JWT_EXPIRY,
algorithm: 'HS256'
});
};
const localAuth = passport.authenticate('local', { session: false });
router.use(bodyParser.json());
router.post('/login', localAuth, (req, res) => {
const authToken = createAuthToken(req.user.serialize());
res.json({ authToken });
});
const jwtAuth = passport.authenticate('jwt', { session: false });
router.post('/refresh', jwtAuth, (req, res) => {
const authToken = createAuthToken(req.user);
res.json({ authToken });
});
您可以定义全局变量并通过中间件使用它。
app.js
// Global Vars
app.use(function (req, res, next) {
res.locals.user = req.user
next();
});
route.js
router.get('/', function(req, res) {
CryptoPortfolio.find({}, function(err, crypto) {
console.log('CryptoPortfolio : ',crypto);
res.render('view/crypto', {
user : res.locals.user // <= here
});
});
});
我希望这会有所帮助:)
我发现我没有在任何必要的路线上使用下面的代码。 实现了它,现在我可以访问req.user了。
const jwtAuth = passport.authenticate('jwt', { session: false });
我也有这个问题。 当我使用 console.log(req.user.id) 或 console.log(req.user) 时。 它给了我null。
"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.