Javascript 反序列化不会发生
我尝试使用passport.js在我的应用程序上进行身份验证(我使用带有REST API的passport.js,在后端没有一些重定向)。但反序列化不会发生。请帮帮我。这是我的代码: 它是序列化和反序列化Javascript 反序列化不会发生,javascript,node.js,passport.js,Javascript,Node.js,Passport.js,我尝试使用passport.js在我的应用程序上进行身份验证(我使用带有REST API的passport.js,在后端没有一些重定向)。但反序列化不会发生。请帮帮我。这是我的代码: 它是序列化和反序列化 passport.serializeUser((user, done) => { console.log('serializeUser: ', user); done(null, user._id); }); passport.deserializeUser((id,
passport.serializeUser((user, done) => {
console.log('serializeUser: ', user);
done(null, user._id);
});
passport.deserializeUser((id, done) => {
console.log('deserializeUser: ', id);
User.findById(id, function (err, user) {
done(err, user);
});
});
我的中间件:
app.use(
expressSession({
secret: 'top_secret',
store: new FileStore(),
cookie: {
path: '/',
httpOnly: true,
maxAge: 60 * 60 * 1000,
},
resave: false,
saveUninitialized: false,
})
);
app.use(passport.initialize());
app.use(passport.session());
我的策略:
const signIn = (passport) => {
passport.use(
'signin',
new LocalStrategy(
{
usernameField: 'email',
passwordField: 'password',
},
(email, password, done) => {
User.findOne({ email }, (err, user) => {
if (err) return done(err);
if (!user) {
return done(null);
}
if (!isValidPassword(user, password)) {
return done(null);
}
return done(null, user);
});
}
)
);
};
我的控制器:
const handleSignIn = (req, res, next) => {
passport.authenticate('signin', (err, user) => {
if (err) return next(err);
if (user) {
req.logIn(user, (err) => {
if (err) return next(err);
res.send(req.user);
});
} else {
res.status(HttpStatusCode.UNAUTHORIZED).send({ error: 'error with login or password' });
}
})(req, res, next);
};
在授权之后,我尝试从端点获取数据,并在那个里检查req.session.passport,但它是未定义的
const handleGetUserData = async (req, res) => {
console.log(req.session.passport); // undefined
try {
const data = await Users.getUser();
res.status(HttpStatusCode.OK).send(data);
} catch (error) {
res.status(HttpStatusCode.INTERNAL_SERVER_ERROR).send({ error });
}
};
您可以访问
req.user
中的护照数据吗?可以,我可以访问