尝试设置护照本地。使用此guide作为灵感。
我遇到的问题是,当我从routes-file调用函数时,到控制器文件它不会工作。如果我把来自controller-file的代码放在routes-file中就行了。
这是我的app.js
module.exports = (app) => {
const user = require('../controllers/controller.user.js');
const passport = require('passport');
// Visa Logga in-sidan
app.get('/login', user.login)
// Visa registreringssidan
app.get('/signup', user.signup)
// Skapa user
app.post('/signup', user.createUser)
}

这是routes.user.js
const User = require('../models/user.js');
const passport = require('passport');
require('../../config/passport')(passport)
exports.login = (req, res) => {
res.render('pages/login', { message: req.flash('loginMessage') });
};
exports.signup = (req, res) => {
res.render('pages/signup', { message: req.flash('signupMessage') });
};
exports.createUser = (req, res) => {
passport.authenticate('local-signup', {
successRedirect : '/all', // redirect to the secure profile section
failureRedirect : '/signup', // redirect back to the signup page if there is an error
failureFlash : true // allow flash messages
});
};
这是controller.user.js
passport.authenticate('local-signup', {
successRedirect : '/all', // redirect to the secure profile section
failureRedirect : '/signup', // redirect back to the signup page if there is an error
failureFlash : true // allow flash messages
});

当我尝试注册用户时,它会超时。没有更多,只是超时。
但是如果我从controller.user.js移动这部分......
// Skapa user
app.post('/signup', passport.authenticate('local-signup', {
successRedirect : '/all', // redirect to the secure profile section
failureRedirect : '/signup', // redirect back to the signup page if there is an error
failureFlash : true // allow flash messages
}));

...到routes.user.js
{{1}}
..一切正常。
为什么它在controller.user.js文件中不起作用?
答案 0 :(得分:1)
找到了这个; Passport Authenticate doesn't redirect
与@IdanDagan发布的解决方案相同。
我在controller.user.js
中更改了这部分
exports.createUser = (req, res, next) => {
passport.authenticate('local-signup', {
successRedirect : '/all', // redirect to the secure profile section
failureRedirect : '/signup', // redirect back to the signup page if there is an error
failureFlash : true // allow flash messages
});
};
以下
exports.createUser = (req, res, next) => {
passport.authenticate('local-signup', {
successRedirect : '/all', // redirect to the secure profile section
failureRedirect : '/signup', // redirect back to the signup page if there is an error
failureFlash : true // allow flash messages
})(req, res, next);
};
......现在它充当了魅力!
感谢您的帮助。希望这也可以帮助其他人。
答案 1 :(得分:0)
您希望在exports
和module.exports
之间看起来有所不同,并在控制器中使用module.exports
代替exports