需要检索表单数据

时间:2014-03-05 15:17:26

标签: node.js express mongoose passport.js

我有一些登录页面,一旦经过身份验证获得成功,在下一页中,我应该显示登录详细信息..(即用户名和密码)

我正在使用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

请告诉我出了什么问题以及我需要纠正什么?

1 个答案:

答案 0 :(得分:0)

在最一般意义上,如果身份验证成功,则从身份验证返回的用户对象最终会在下游函数中的req.user处结束。

http://passportjs.org/guide/authenticate/

然后,假设您正在使用会话,任何后续请求也将根据您的serializeUser / deserializeUser函数公开req.user

相关问题