【问题标题】:Get Entered Data after authentication success认证成功后获取输入数据
【发布时间】:2014-04-08 12:13:19
【问题描述】:

我正在使用 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 %> // I WANT TO RETREIVE USERNAME HERE WHICH WAS ENTERED IN LOGIN PAGE..

【问题讨论】:

    标签: node.js express mongoose passport.js


    【解决方案1】:

    当您的passport.deserializeUser 返回用户数据时,passport 会使用它填充req.user 对象。您需要在路由处理程序中将此对象作为 res.render 方法的第二个参数传递给模板:

    app.js

    (...)
    app.get('/success', function(req, res, next){
        res.render('user', { user: req.user })
    });
    

    success.ejs

    <%= user.uname %>
    

    【讨论】:

      猜你喜欢
      • 2016-07-30
      • 1970-01-01
      • 2017-10-25
      • 2013-08-02
      • 1970-01-01
      • 1970-01-01
      • 2017-12-15
      • 1970-01-01
      • 2021-09-08
      相关资源
      最近更新 更多