Establish Session

In the previous section, you configured Passport and added a route to authenticate a username and password. In this section, you'll establish a login session which will maintain the user's authenticated state as they navigate the app.

In order to establish a login session, the app needs session support. Install express-session and the connect-sqlite3 session store as dependencies.

$ npm install express-session
$ npm install connect-sqlite3

Open app.js and require() the additional dependencies at line 8, below require('morgan').

var logger = require('morgan');
var passport = require('passport');
var session = require('express-session');

var SQLiteStore = require('connect-sqlite3')(session);

Add the following code at line 29, after express.static() middleware, which will add session support to the app and then authenticate the session.

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'));

Finally, configure Passport to persist user information in the login session. Open routes/auth.js and add the following code at line 22.

passport.serializeUser(function(user, cb) {
  process.nextTick(function() {
    cb(null, { id: user.id, username: user.username });
  });
});

passport.deserializeUser(function(user, cb) {
  process.nextTick(function() {
    return cb(null, user);
  });
});

Now try signing in. Open http://localhost:3000, click "Sign in," and enter the following credentials:

Username: alice
Password: letmein

Click "Sign in."

You are signed in! Go ahead and enter some tasks you've been needing to get done.

At this point, you have built an app that allows users to sign in with a username and password! Next, you will add sign out.

SEARCH FOR STRATEGIES

0STRATEGIES