'req.user is undefined in PassportJs
I'm am trying to establish an authentication using passportjs, I don't have a big knowledge with this middleware, but the course that I'm following uses it and when I wanted to use it it didn't work for me, I've tried almost every possible solution, but none of them helped , and when I tried to log the value of req.user, it returned undefined.
so we have 3 files to perform this operation:
1 . the user.js MongoDb schema :
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const passportLocalMongoose = require('passport-local-mongoose');
const User = new Schema({
admin: {
type: Boolean,
default: false,
},
});
User.plugin(passportLocalMongoose);
module.exports = mongoose.model('User', User);
- the authenticate.js file
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var User = require('./models/users');
exports.local = passport.use(new LocalStrategy(User.authenticate()));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
3.And the app.js server file
var express = require('express');
var cookieParser = require('cookie-parser');
var session = require('express-session');
var FileStore = require('session-file-store')(session);
const passport = require('passport');
const authenticate = require('./authenticate');
.... other code .....
//Session
app.use(
session({
name: 'session-id',
secret: '12345-67890-09876-54321',
saveUninitialized: false,
resave: false,
store: new FileStore(),
})
);
app.use(passport.initialize());
app.use(passport.session());
app.use('/', indexRouter);
app.use('/users', usersRouter);
function auth (req, res, next) {
console.log(req.user);
if (!req.user) {
var err = new Error('You are not authenticated!');
err.status = 403;
next(err);
}
else {
next();
}
}
That's it, I'm using :
"passport": "^0.4.0",
"passport-local": "^1.0.0",
"passport-local-mongoose": "^5.0.1",
"express": "~4.16.0",
"express-session": "^1.15.6",
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|