Javascript 在使用PassportJS在Node.js中验证用户后,在重定向URL路径中包括用户名

Javascript 在使用PassportJS在Node.js中验证用户后,在重定向URL路径中包括用户名,javascript,login,passport.js,Javascript,Login,Passport.js,我正在使用PassportJS创建一个登录/注册程序。然后,为了输入,我尝试在重定向路径中包含用户的用户名。更准确地说,当用户使用用户名和密码登录时,我想将他/她重定向到localhost:3000/library?“username”页面。我怎么做 var config = require('./config'); var express = require('express'); var path = require('path'); var logger = require('morgan

我正在使用PassportJS创建一个登录/注册程序。然后,为了输入,我尝试在重定向路径中包含用户的用户名。更准确地说,当用户使用用户名和密码登录时,我想将他/她重定向到localhost:3000/library?“username”页面。我怎么做

var config = require('./config');
var express = require('express');
var path = require('path');
var logger = require('morgan');
var bodyParser = require('body-parser');
var dustjs = require('adaro');
var app = express();
var multer  = require('multer');
var passport = require('passport');
LocalStrategy = require('passport-local').Strategy;
var mongoose   = require('mongoose');
require('./models');
require('express-session');

// Connect to MongoDB here
var mongoose   = require('mongoose');
mongoose.connect(config.mongoUrl + config.mongoDbName);
//passport

// --------------- USER PART --------------------\\

var User = mongoose.model('User');

passport.use(new LocalStrategy({
    usernameField:'userName',
    passwordField:'password'

},
function(username, password, done) {
    User.findOne({userName: username}, function (err, user) {
        if (err) { return done(err); }
        // Return an error as in Node
        if (!user) {
            return done(null, false, { message: 'Incorrect username.' });
            // If user does not exist return the error and the message
        }
        user.isValidPassword(password, function(err,isMatch){
            if (isMatch==true){
                return done(null, true);
                // Authentication is good, the password is valid
            }else{
                return done(null, false, {message:"Incorrect password! "})
            }
          });
      });
    }
));

passport.serializeUser(function(users, done) {
    done(null, 0);
// Invoke passport with user._id authenticated
});

passport.deserializeUser(function(id, done) {
    User.findById(id, function(err, user) {
        // Deserializza e cerca attraverso l'id
        done(err, user);
    });
});

// --------------- EDN USER PART --------------------\\

/*--- Configure the multer. used to upload the track from our pc on the server ---*/
app.use(multer({ dest: './public/tracks_folder/',
    rename: function (fieldname, filename) {
        return filename;
    }
}));

// Register model definition here
require('./models');

// dustjs view engine setup
app.engine('dust', dustjs.dust());
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'dust');

// USER
app.use(passport.initialize());
app.use(passport.session());

//configure app
app.use(logger('dev'));
app.use(bodyParser.urlencoded({ extended: false }));    // parse application/x-www-form-urlencoded
app.use(bodyParser.json());    // parse application/json
app.use(express.static(path.join(__dirname, 'public')));

// Initialize routers here

var routers = require('./routes/routers');
app.use('/', routers.root);
app.use('/albums', routers.albums);
app.use('/artists', routers.artists);
app.use('/tracks', routers.tracks);
app.use('/users', routers.users);

// USER
app.use('/signup', routers.signup);
app.use('/library', routers.library);

EDIT OF GET

app.get('/login', function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
    if (err) { return next(err); }
    if (!user) { return res.redirect('/login'); }
    req.logIn(user, function(err) {
        if (err) { return next(err); }
        return res.redirect('/library/' + user.username);
        });
    })(req, res, next);
});

app.post('/login',
    passport.authenticate('local', { successRedirect: '/library',
        failureRedirect: '/'}));

// END USER
module.exports = app;

我对这个问题很感兴趣,直到。。。我怎么做?你是对的。您是否建议修改此部分?您希望在代码段中的何处执行重定向?你有没有尝试过用否定的结果来解决这个问题?你能重复这个问题吗?我有点困惑…我将把上面的代码作为编辑