我正在使用Passport.js以用户名和密码登录用户.我基本上使用Passport站点的示例代码.以下是我的代码的相关部分(我认为):
app.use(passport.initialize());
app.use(passport.session());
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(obj, done) {
done(null, obj);
});
passport.use(new LocalStrategy(function(username, password, done) {
User.findOne({ username: username }, function(err, user) {
if (err) {
return done(err);
}
if (!user) {
return done(null, false, { message: 'Incorrect username.' });
}
if (!user.validPassword(password)) {
return done(null, false, { message: 'Incorrect password.' });
}
return done(null, user);
});
}
));
app.post('/login',
passport.authenticate('local', { failureRedirect: '/login/fail', failureFlash: false }),
function(req, res) {
// Successful login
//console.log("Login successful.");
// I CAN ACCESS req.user here
});
Run Code Online (Sandbox Code Playgroud)
这似乎正确登录.但是,我希望能够在代码的其他部分访问登录用户的信息,例如:
app.get('/test', function(req, res){
// How can I get the user's login info here?
console.log(req.user); // <------ this outputs undefined
});
Run Code Online (Sandbox Code Playgroud)
我已经检查了其他问题,但我不确定我在这里做错了什么.谢谢!
Dar*_*s22 53
晚了,但是在我自己搜索答案之后发现这个没有答案.
请求内部将是req.user您可以使用的对象.
这样的路线:
app.get('/api/portfolio', passport.authenticate('jwt', { session: false }), stocks.buy);
Run Code Online (Sandbox Code Playgroud)
这样的控制器:
buy: function(req, res) {
console.log(req.body);
//res.json({lel: req.user._id});
res.json({lel: req.user});
}
Run Code Online (Sandbox Code Playgroud)
参考Passport文档,用户对象包含在req.user中.见下文.
app.post('/login',
passport.authenticate('local'),function(req, res) {
// If this function gets called, authentication was successful.
// `req.user` contains the authenticated user.
res.redirect('/users/' + req.user.username);
});
Run Code Online (Sandbox Code Playgroud)
这样,您就可以从重定向到的页面访问用户对象.
如果你遇到困难,你可以参考我的Github项目,我清楚地实现了它.
250*_*50R -3
您需要确保在注册护照中间件之前注册一个可填充的中间件。req.session
例如以下使用Express cookieSession 中间件
app.configure(function() {
// some code ...
app.use(express.cookieParser());
app.use(express.bodyParser());
app.use(express.cookieSession()); // Express cookie session middleware
app.use(passport.initialize()); // passport initialize middleware
app.use(passport.session()); // passport session middleware
// more code ...
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40501 次 |
| 最近记录: |