我有一些登录页面,一旦经过身份验证获得成功,在下一页中,我应该显示登录详细信息..(即用户名和密码)
我正在使用Express NodeJs,Passport,connect-flash,mongoose
我的疑问是:我无法理解如何在下一个呈现页面中检索用户名,密码..
请有人建议我如何实现它。我不是在问你代码,而是告诉我一种获取输出的方法。
编辑:
app.js
var http = require('http');
var express = require('express'),
passport = require('passport')
, LocalStrategy = require('passport-local').Strategy,
flash = require('connect-flash'),
User = require('./routes/userdao.js');
passport.use(new LocalStrategy(
function(username, password, done) {
User.findOne({ uname: username ,pwd:password}, function(err, user) {
if (err) { return done(err); }
if (!user) {
return done(null, false, { message: 'Incorrect username.' });
}
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);
});
});
var app = express();
app.configure(function(){
app.use(express.logger('dev')); /* 'default', 'short', 'tiny', 'dev' */
app.use(express.cookieParser());
app.use(express.bodyParser());
app.use(express.session({ secret: 'mysecret' }));
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());
app.engine('.html', require('ejs').__express);
app.set('view engine', 'html');
app.set('views', __dirname + '/views');
app.use(app.router);
// app.use(express.errorHandler());
}).listen(3000);
console.log('Listening on port 3000...');
app.get('/',function(req,res){
/* req.flash('info', 'Flash is back!')
res.redirect('/success');*/
res.render('home.ejs');
});
app.get('/login',function(req,res){
res.render('login.ejs');
});
app.get('/success',function(req,res){
res.render('success.ejs',{ uname : req.user.username });
});
app.post('/login',
passport.authenticate('local', { successRedirect: '/success', failureRedirect: '/login',
failureFlash: true }));
success.ejs
<%= uname %>
我正在尝试显示我在登录页面中输入的用户名。我收到了输出:undefined
请告诉我出了什么问题以及我需要纠正什么?
答案 0 :(得分:0)
在最一般意义上,如果身份验证成功,则从身份验证返回的用户对象最终会在下游函数中的req.user
处结束。
http://passportjs.org/guide/authenticate/
然后,假设您正在使用会话,任何后续请求也将根据您的serializeUser / deserializeUser函数公开req.user
。