https://github.com/jaredhanson/connect-ensure-login
Login session ensuring middleware for Connect and Express.
https://github.com/jaredhanson/connect-ensure-login
Last synced: over 1 year ago
JSON representation
Login session ensuring middleware for Connect and Express.
- Host: GitHub
- URL: https://github.com/jaredhanson/connect-ensure-login
- Owner: jaredhanson
- License: mit
- Created: 2012-06-29T15:27:46.000Z (about 14 years ago)
- Default Branch: master
- Last Pushed: 2022-09-17T01:53:33.000Z (almost 4 years ago)
- Last Synced: 2025-04-03T05:09:38.315Z (over 1 year ago)
- Language: JavaScript
- Size: 185 KB
- Stars: 468
- Watchers: 12
- Forks: 61
- Open Issues: 22
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# connect-ensure-login
This middleware ensures that a user is logged in. If a request is received that
is unauthenticated, the request will be redirected to a login page. The URL
will be saved in the session, so the user can be conveniently returned to the
page that was originally requested.
## Install
$ npm install connect-ensure-login
## Usage
#### Ensure Authentication
In this example, an application has a settings page where preferences can be
configured. A user must be logged in before accessing this page.
app.get('/settings',
ensureLoggedIn('/login'),
function(req, res) {
res.render('settings', { user: req.user });
});
If a user is not logged in when attempting to access this page, the request will
be redirected to `/login` and the original request URL (`/settings`) will be
saved to the session at `req.session.returnTo`.
#### Log In and Return To
This middleware integrates seamlessly with [Passport](http://passportjs.org/).
Simply mount Passport's `authenticate()` middleware at the login route.
app.get('/login', function(req, res) {
res.render('login');
});
app.post('/login', passport.authenticate('local', { successReturnToOrRedirect: '/', failureRedirect: '/login' }));
Upon log in, Passport will notice the `returnTo` URL saved in the session and
redirect the user back to `/settings`.
#### Step By Step
If the user is not logged in, the sequence of requests and responses that take
place during this process can be confusing. Here is a step-by-step overview of
what happens:
1. User navigates to `GET /settings`
- Middleware sets `session.returnTo` to `/settings`
- Middleware redirects to `/login`
2. User's browser follows redirect to `GET /login`
- Application renders a login form (or, alternatively, offers SSO)
3. User submits credentials to `POST /login`
- Application verifies credentials
- Passport reads `session.returnTo` and redirects to `/settings`
4. User's browser follows redirect to `GET /settings`
- Now authenticated, application renders settings page
## Tests
$ npm install --dev
$ make test
[](http://travis-ci.org/jaredhanson/connect-ensure-login)
## Credits
- [Jared Hanson](http://github.com/jaredhanson)
## License
[The MIT License](http://opensource.org/licenses/MIT)
Copyright (c) 2012-2013 Jared Hanson <[http://jaredhanson.net/](http://jaredhanson.net/)>