Closed Drew-Daniels closed 2 years ago
I am following the Username & Password Tutorial on the docs, and on the Establish Session Page, after completing typing in this bit of code, I get the following error:
app.use(passport.authenticate('session'));
I would not expect this to happen after following the tutorial step by step.
Follow the steps in the Username and Password tutorial up to the part in Establish a Session, where you add the line:
And see the following error pictured above.
Here is my code:
app.js
require('dotenv').config(); var createError = require('http-errors'); var express = require('express'); var path = require('path'); var cookieParser = require('cookie-parser'); var logger = require('morgan'); var passport = require('morgan'); var session = require('express-session'); var SQLiteStore = require('connect-sqlite3')(session); var indexRouter = require('./routes/index'); var authRouter = require('./routes/auth'); var app = express(); app.locals.pluralize = require('pluralize'); // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs'); app.use(logger('dev')); app.use(express.json()); app.use(express.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use(session({ secret: 'keyboard cat', resave: false, saveUninitialized: false, store: new SQLiteStore({ db: 'sessions.db', dir: './var/db' }) })); app.use(passport.authenticate('session')); app.use('/', indexRouter); app.use('/', authRouter); // catch 404 and forward to error handler app.use(function(req, res, next) { next(createError(404)); }); // error handler app.use(function(err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page res.status(err.status || 500); res.render('error'); }); module.exports = app;
auth.js
var express = require('express'); var passport = require('passport'); var LocalStrategy = require('passport-local'); var crypto = require('crypto'); var db = require('../db'); var router = express.Router(); passport.use(new LocalStrategy(function verify(username, password, cb) { db.get('SELECT * FROM users WHERE username = ?', [ username ], function(err, row) { if (err) return cb(err); if (!row) return cb(null, false, { message: 'Incorrect username or password.' }); crypto.pbkdf2(password, row.salt, 310000, 32, 'sha256', function(err, hashedPassword) { if (err) return cb(err); if (!crypto.timingSafeEqual(row.hashed_password, hashedPassword)) { return cb(null, false, { message: 'Incorrect username or password.' }); } return cb(null, row); }); }); })); router.get('/login', function getLoginPage(req, res, next) { res.render('login'); }); router.post('/login/password', passport.authenticate('local', { successRedirect: '/', failureRedirect: '/login' })); module.exports = router;
package.json
{ "name": "todos-express-starter", "version": "0.0.0", "private": true, "description": "Starter todo app using Express, Passport, and SQLite for sign in.", "keywords": [ "example", "express", "passport", "sqlite" ], "author": { "name": "Jared Hanson", "email": "jaredhanson@gmail.com", "url": "https://www.jaredhanson.me/" }, "homepage": "https://github.com/passport/todos-express-starter", "repository": { "type": "git", "url": "git://github.com/passport/todos-express-starter.git" }, "bugs": { "url": "https://github.com/passport/todos-express-starter/issues" }, "funding": { "type": "github", "url": "https://github.com/sponsors/jaredhanson" }, "license": "Unlicense", "scripts": { "start": "node ./bin/www", "devstart": "nodemon ./bin/www" }, "dependencies": { "connect-sqlite3": "^0.9.13", "cookie-parser": "~1.4.4", "debug": "~2.6.9", "dotenv": "^8.6.0", "ejs": "~2.6.1", "express": "~4.16.1", "express-session": "^1.17.3", "http-errors": "~1.6.3", "mkdirp": "^1.0.4", "morgan": "~1.9.1", "passport": "^0.6.0", "passport-local": "^1.0.0", "pluralize": "^8.0.0", "sqlite3": "^5.0.2" }, "devDependencies": { "nodemon": "^2.0.19" } }
Nevermind, user error - required morgan instead of passport 😵💫
morgan
passport
I am following the Username & Password Tutorial on the docs, and on the Establish Session Page, after completing typing in this bit of code, I get the following error:
Expected behavior
I would not expect this to happen after following the tutorial step by step.
Actual behavior
Steps to reproduce
Follow the steps in the Username and Password tutorial up to the part in Establish a Session, where you add the line:
And see the following error pictured above.
Here is my code:
app.js
:auth.js
:package.json
:Environment