12

I develop a restful nodeJS API protected by a oauth2 authentication using passport.

  var express = require('express');
    var passport = require('passport');
    var port = process.env.PORT || 8080;
    var app = express();

    app.use(passport.initialize());

    // Create our Express router
    var router = express.Router();
    var creatureController = require('./controllers/creature');

    router.route('/creature').get(passport.authenticate('accessToken', {session: false}), creatureController.getProfile);

In this case, the route is protected and it requires to send a valid token in order to access to the route.

I want to find a way to authenticate my "users" manually, by calling a function, which take the username and password of the user I want to authenticate.

Bob
  • 589
  • 1
  • 11
  • 25

2 Answers2

16

Passport exposes a req.login() function that can be used to login the user manually.

app.post('/login', function (req, res, next) {
    var user = User.findOrCreate(req.body);
    // … your authentication or whatever
    req.login(user, function(err){
        if(err) return next(err);
        res.redirect('/home');
    });
});
laggingreflex
  • 32,948
  • 35
  • 141
  • 196
0

You can manually use passport.authenticate this way

passport.authenticate('jwt', { session: false }, (err, user, info) => {
/**
* user - the user objec
* info - info about the error
*/                
console.log(err, user, info);
              
})(req, res, next);

Niteesh
  • 2,742
  • 3
  • 12
  • 33