Я использовал Express поверх Node с шаблоном .hbs templating. Я использую паспорт для проверки конкретного пользователя. База данных, которую я использовал в MongoDB.
Здесь мой маршрут регистрации:
var express = require('express');
var router = express.Router();
var passport = require('passport');
var userServices = require('../services/user-services');
router.get('/', function(req, res, next) {
var vm = {
title: 'Join this web',
};
res.render('signup', vm);
});
router.post('/', function(req, res, next) {
userServices.addUser(req.body, function(err){
if(err){
var vm = {
title: 'Create an account',
input: req.body,
error: err
};
delete vm.input.password;
return res.render('signup', vm);
}
req.login(req.body, function(err) {
res.redirect('/profile');
});
});
});
router.post('/login', passport.authenticate('local'), function(req, res, next){
res.redirect('/profile');
});
module.exports = router;
Вот мой логин:
var express = require('express');
var router = express.Router();
router.get('/', function(req, res, next) {
if (req.user) {
return res.redirect('/profile');
}
res.render('login', { title: 'Login' });
});
module.exports = router;
Я определил конфигурацию своего паспорта в моем паспортном файле:
module.exports=function(){
var passport = require('passport');
var passportLocal = require('passport-local');
var userServices = require('../services/user-services');
passport.use(new passportLocal.Strategy({usernameField: 'email'}, function(email, password, next) {
userServices.findUser(email, function(err, user){
if(err){
return next(err);
}
if(!user||user.password!==password){
return next(null, null);
}
next(null, user);
});
}));
passport.serializeUser(function(user, next){
next(null, user.email);
});
passport.deserializeUser(function(user, next){
userServices.findUser(email, function(err, user){
next(err, user);
});
});
};
Кроме того, вот мой app.js с кодом, связанным с паспортом:
var passportConfig = require('./auth/passport-config');
passportConfig();
var app = express();
app.use(expressSession({
secret:'trawel man',
saveUninitialized: false,
resave: false
}));
app.use(passport.initialize());
app.use(passport.session());
Вот трассировка стека ошибки, которую я получаю:
Error: Not Found
at C:\Users\James\MEAN\app.js:56:15
at Layer.handle [as handle_request] (C:\Users\James\MEAN\node_modules\express\lib\router\layer.js:82:5)
at trim_prefix (C:\Users\James\MEAN\node_modules\express\lib\router\index.js:302:13)
at C:\Users\James\MEAN\node_modules\express\lib\router\index.js:270:7
at Function.proto.process_params (C:\Users\James\MEAN\node_modules\express\lib\router\index.js:321:12)
at next (C:\Users\James\MEAN\node_modules\express\lib\router\index.js:261:10)
at C:\Users\James\MEAN\node_modules\express\lib\router\index.js:603:15
at next (C:\Users\James\MEAN\node_modules\express\lib\router\index.js:246:14)
at Function.proto.handle (C:\Users\James\MEAN\node_modules\express\lib\router\index.js:166:3)
at router (C:\Users\James\MEAN\node_modules\express\lib\router\index.js:35:12)
at Layer.handle [as handle_request] (C:\Users\James\MEAN\node_modules\express\lib\router\layer.js:82:5)
at trim_prefix (C:\Users\James\MEAN\node_modules\express\lib\router\index.js:302:13)
at C:\Users\James\MEAN\node_modules\express\lib\router\index.js:270:7
at Function.proto.process_params (C:\Users\James\MEAN\node_modules\express\lib\router\index.js:321:12)
at next (C:\Users\James\MEAN\node_modules\express\lib\router\index.js:261:10)
at C:\Users\James\MEAN\node_modules\express\lib\router\index.js:603:15
Это то, что я получил на своей серверной консоли:
POST /login 404 32.453 ms - 2847
Я понятия не имею, почему это не работает. Я новичок в Node. Кто-то помогает мне.