0
我目前使用jet来验证用户。 在我的user.routes我也有一个router.param()来加载用户并将其附加到请求。 是否对Jet用户进行了控制:userId还保护着router.param()负载(检查之前是否?) 还是应该保护router.param()?Node-Express JWT认证过程如何?
问题是JWT是设置req.user到:
{ username: 'johndoe', iat: 1496329757 }
而且router.param()的搜索和用户应该加载到req.user过! ? 但它不...
如果我调试REQ用户在addRole功能的开始,我仍然得到
{ username: 'johndoe', iat: 1496329757 }
注:不知道标题正确地反映了我的问题.. 。建议表示欢迎
user.route.js
import express from 'express';
import expressJwt from 'express-jwt';
import validate from 'express-validation';
import paramValidation from '../../../config/param-validation';
import userCtrl from '../controllers/user.controller';
import config from '../../../config/config';
const router = express.Router(); // eslint-disable-line new-cap
...
/** GET /api/users/:userId - Get user */
router.route('/:userId')
/** GET /api/users/:userId - Get user */
.get(expressJwt({ secret: config.jwtSecret }), userCtrl.get);
...
/** Load user when API with userId route parameter is hit */
router.param('userId', userCtrl.load);
个user.controller.js
import httpStatus from 'http-status';
import APIError from '../../helpers/APIError';
import User from '../../models/user.model';
/**
* Load user and append to req.
*/
function load(req, res, next, id) {
User.get(id)
.then((user) => {
req.user = user; // eslint-disable-line no-param-reassign
next();
})
.catch((e) => {
if (e.name === 'CastError') {
const err = new APIError('Cast Error', httpStatus.BAD_REQUEST, true);
next(err);
} else {
const err = new APIError('User not found', httpStatus.NOT_FOUND, true);
next(err);
}
});
}