Я новичок в nodejs
, поэтому я пытался создать систему аутентификации. Я реализовал его после выполнения учебника. Чтобы получить пользовательский объект при аутентификации, вам необходимо сохранить его в сеансе. Я сделал это путем настройки express-session
следующим образом:Паспорт - пользователь не хранится в сеансе
require('./config/passport')(passport); // pass passport for configuration
app.use(session({
secret: 'thisisagreatgreatsecretforthesession',
resave: true,
saveUninitialized: true
}));
app.use(morgan('dev'));
app.use(cookieParser());
app.use(bodyParser.urlencoded({ extended : false }));
app.use(bodyParser.json());
app.use(passport.initialize());
app.use(passport.session());
app.use(flash());
app.use(function(req, res, next) {
res.locals.user = req.user;
next();
});
var routes = require('./app/routes')(app, passport);
, а затем в паспорте я настроил сериализации и десериализации функции следующим образом:
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
Я попытался утешить пользователя в функции deserializeUser
и это было верный. Однако, когда я вызвал user
в шаблоне, я получил сообщение об ошибке, указывающее, что пользователь не определен.
Я пропустил что-то еще в конфигурации?
Теперь я не получаю никаких ошибок, но в шаблоне ничего не отображается, когда я использую 'user'. Достаточно ли порядок настройки? – omarsafwany
Если вы не получаете никаких ошибок, шаблон может получить доступ к 'user'. Вы можете добавить 'console.log (req.user)' внутри промежуточного программного обеспечения, чтобы убедиться, что оно действительно имеет значение (это скорее всего объект, из которого вы должны использовать свойства в своем шаблоне, например 'user.username' или что-то вроде того). – robertklep
'console.log (req.user)' отлично работает, но в шаблоне, когда я использую '<% user.name%>', я ничего не получаю – omarsafwany