javascript - Passport LocalStrategy 注册重定向问题

标签 javascript express mongoose passport.js mean-stack

我正在尝试在 Passport 上注册后重定向用户

passport.use('local-signup', new LocalStrategy({
usernameField : 'username',
passwordField : 'password',
passReqToCallback : true},
function(req, username, password, done) {

    // asynchronous
    // User.findOne wont fire unless data is sent back
    process.nextTick(function() {

    // find a user whose username is the same as the forms username
    User.findOne({ username :  username }, function(err, user) {
        // if there are any errors, return the error
        if (err)
            return done(err);
        if (user) {
            return done(null, false, req.flash('signupMessage', 'Username is already taken.'));
        } else {
            var newUser = new User();
            newUser.username = username;
            newUser.password = password;
            newUser.email = req.body.email;
            newUser.save(function(err) { // create user
                if (err) {
                    return next(err);
                } else {
                    var site = new Site({user : newUser.username, siteTitle: newUser.username});
                    site.save(function(err) { // create website
                        if (err) {
                            return next(err);
                        } else {
                        newUser.sites.push(site); // push site'id in sites field in user
                        newUser.save(); // save user after site'id has been push
                        };
                    });
                };
            res.redirect('users/' + username);
            });
            ...

我得到ReferenceError:res未定义

当我开始 Mean dev 时,任何帮助将不胜感激。

非常感谢

最佳答案

您不应该在此处处理重定向 - 该策略的功能是确定用户是否经过身份验证。

然后可以在中间件中完成重定向:

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

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

关于javascript - Passport LocalStrategy 注册重定向问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29653322/

相关文章:

javascript - 选择框更改在同一表格行内生效

javascript - iPad 需要三点触控来处理 JavaScript 点击事件

javascript - 仅在某些路由上使用 Express.JS 中间件

javascript - Express:在 Controller 中使用异步等待的问题

mongodb - 无法使用 Node.js Express MongoDB Mongoose CoffeeScript 进行 POST

javascript - 在 document.forms[x].elements 中从 DOM 中省略图像输入是否正常?

javascript - 如何检查数组是否包含javascript中的另一个数组

javascript - 检查 req.checkBody() 内的 req.body.property.childProperty

javascript - 如何仅使用一个关键字搜索 MongoDB 集合中的所有键

node.js - Mocha 测试失败时执行两次回调