nodejs - passport.use 回调返回 dataValues 和 _previousDataValues 而不是普通对象
Posted
技术标签:
【中文标题】nodejs - passport.use 回调返回 dataValues 和 _previousDataValues 而不是普通对象【英文标题】:nodejs - passport.use callback return dataValues and _previousDataValues instead of a normal object 【发布时间】:2021-08-04 07:09:27 【问题描述】:我正在使用passport.js
模块进行身份验证并使用 Sequelize mysql 进行数据库管理。
验证用户时出错:
"errors":
"message": "WHERE parameter \"id\" has invalid \"undefined\" value",
"error":
验证用户时,文件passport.js
中的console.log(jwtPayload)
显示以下结果。
dataValues:
id: '06c19eb0-995f-45f4-81d7-26ec3b401234',
email: 'CCCC@gmail.com',
createdAt: '2021-05-14T01:51:31.000Z',
updatedAt: '2021-05-14T01:51:31.000Z'
,
_previousDataValues:
id: '06c19eb0-995f-45f4-81d7-26ec3b401234',
email: 'CCCC@gmail.com',
createdAt: '2021-05-14T01:51:31.000Z',
updatedAt: '2021-05-14T01:51:31.000Z'
,
_changed: ,
_options:
isNewRecord: false,
_schema: null,
_schemaDelimiter: '',
raw: true,
attributes: [ 'id', 'email', 'createdAt', 'updatedAt' ]
,
isNewRecord: false,
iat: 1620961695
而不是
id: '06c19eb0-995f-45f4-81d7-26ec3b401234',
email: 'CCCC@gmail.com',
createdAt: '2021-05-14T01:51:31.000Z',
updatedAt: '2021-05-14T01:51:31.000Z'
passport.js
var passport = require('passport');
const passportJWT = require("passport-jwt");
const JWTStrategy = passportJWT.Strategy;
var LocalStrategy = require('passport-local').Strategy;
const ExtractJWT = passportJWT.ExtractJwt;
const bcrypt = require('bcryptjs');
var User = require('../models/Users')
module.exports = function(passport)
passport.use(new JWTStrategy(
jwtFromRequest: ExtractJWT.fromAuthHeaderAsBearerToken(),
secretOrKey : 'your_jwt_secret'
,
function (jwtPayload, done)
console.log(jwtPayload)
return User.findOne(where: id:jwtPayload.id)
.then(user =>
return done(null, user);
)
.catch(err =>
return done(err);
);
));
;
【问题讨论】:
【参考方案1】:Sequelize 按设计返回dataValues
和_previousDataValues
属性。您只需稍作修改即可传递当前值。
return User.findOne(where: id:jwtPayload.id)
.then(user =>
return done(null, user.dataValues);
)
【讨论】:
以上是关于nodejs - passport.use 回调返回 dataValues 和 _previousDataValues 而不是普通对象的主要内容,如果未能解决你的问题,请参考以下文章
NodeJS Passport按路由配置,作为中间件添加并且没有错误但它不起作用/触发
LocalStrategy Passport 返回 null
LocalStrategy Passport 返回 null
对passport.use(strategy) done 功能及其与passport.authenticate 的关系感到困惑