backend logging
This commit is contained in:
+75
@@ -0,0 +1,75 @@
|
||||
# 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/)>
|
||||
Reference in New Issue
Block a user