Node.js Passportjs req.isAuthenticated始终显示false
我工作nodejs/Angular passport中间件登录验证工作正常,但当我尝试在req的帮助下获取登录用户名时。身份验证不调用passport.deserializeUser函数always req.Authentication显示错误帮助如何纠正此问题任何想法。 这里我粘贴了我的代码 Server.js PassportConfig 用户模式Node.js Passportjs req.isAuthenticated始终显示false,node.js,angular,express,passport.js,Node.js,Angular,Express,Passport.js,我工作nodejs/Angular passport中间件登录验证工作正常,但当我尝试在req的帮助下获取登录用户名时。身份验证不调用passport.deserializeUser函数always req.Authentication显示错误帮助如何纠正此问题任何想法。 这里我粘贴了我的代码 Server.js PassportConfig 用户模式 最后,我找到了一个解决方案,解决了使用凭据传递登录头请求的问题:true const httpOptions = { observe:'bo
最后,我找到了一个解决方案,解决了使用凭据传递登录头请求的问题:true
const httpOptions = {
observe:'body',
withCredentials:true,
headers:new HttpHeaders().append('Content-Type','application/json')
};
我在你的代码中看不到对“req.authentication”的引用,你能确保你指定了正确的变量/函数,并且总是返回false吗?req.isAuthenticated我更新了我的问题@ElliotBlackburnGreat,如果你的问题还没有更新,那么在正文中更新它是值得的。谢谢您的澄清。@ElliotBlackburn解决这个问题有什么想法吗?在哪里声明了
req.isAuthenticated()
?我看不到它被附加到req
对象的任何地方。通常,Passportjs将user
对象附加到req
,因此一般测试是if(req.user){/*用户已登录*/},否则{/*用户未登录*/}
。我不确定isAuthenticated在哪里被附加到req对象,或者req.isAuthenticated的定义是什么。
const User = require('../SchemaConfig/UserSchema');
var passport = require('passport')
, LocalStrategy = require('passport-local').Strategy;
const bcrypt = require('bcrypt-nodejs');
passport.use('local', new LocalStrategy({
usernameField: 'Email',
passwordField: 'Password'
},
function (Email, Password, done) {
debugger
User.findOne({ Email: Email }, function (err, user) {
debugger
if (err) { return done(err); }
if (!user) {
return done(null, false, {
ErrorMsg: 'Incorrect Email.'
});
}
if (user) {
GlobalUserPwd = user.Password;
}
if (!ComparePassword(Password)) {
return done(null, false, {
ErrorMsg: 'Incorrect password.'
});
}
return done(null, user);
});
}
));
passport.serializeUser(function (user, done) {
done(null, user.id);
});
passport.deserializeUser(function (id, done) {
User.findById(id, function (err, user) {
done(err, user);
});
});
function ComparePassword(CandidatePassword) {
return bcrypt.compareSync(CandidatePassword, GlobalUserPwd)
};
exports.loginVerify = (req, res, next) => {
passport.authenticate('local', function (err, user, info) {
debugger
if (err) { return next(err); }
if (!user) { return res.status(501).json(info); }
req.logIn(user, function (err) {
if (err) { return next(err); }
return res.status(200).json({message:'Login Success'});
});
})(req, res, next);
};
const httpOptions = {
observe:'body',
withCredentials:true,
headers:new HttpHeaders().append('Content-Type','application/json')
};