Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Passport Authentication immediately after New User Registration

Tags:

I'm trying to authenticate and login a user immediately after submitting a POST on the /register form. Ideally, I would like users to be able to register and then be redirected immediately to the dashboard without having to enter their credentials again.

My server is using Passport 0.1.17 with the local strategy configured to use email address and password for login. The current code is:

app.post('/register', function(req, res) {    // attach POST to new User variable   var registerUser = new User({ email: req.body.email, password: req.body.password, name: req.body.name });    // save registerUser Mongo   registerUser.save(function(err) {     if(err) {       console.log(err);     } else {       console.log('registerUser: ' + registerUser.email + " saved.");     }   });    // here is where I am trying to authenticate and then redirect   passport.authenticate('local', { failureRedirect: '/login', failureFlash: true }),   res.redirect('/dashboard');   }); 

How would I refactor this code to save the new user, then authenticate and finally redirect to the dashboard?

Thanks in advance!

like image 374
surfearth Avatar asked Jul 30 '13 21:07

surfearth


People also ask

What does passport authenticate () do?

In this route, passport. authenticate() is middleware which will authenticate the request. By default, when authentication succeeds, the req. user property is set to the authenticated user, a login session is established, and the next function in the stack is called.

Is passport good for authentication?

Passport is a popular, modular authentication middleware for Node. js applications. With it, authentication can be easily integrated into any Node- and Express-based app. The Passport library provides more than 500 authentication mechanisms, including OAuth, JWT, and simple username and password based authentication.

Does passport use session?

Passport uses serializeUser function to persist user data (after successful authentication) into session. The function deserializeUser is used to retrieve user data from session and perform some condition-based operations. Now all the endpoints hitting the backend server will go through passport.

How to register for a passport online?

Since the introduction of the online facility, the procedure of registering for a passport and then obtaining a passport login has been simple. The complete procedure takes only a few minutes if you follow the procedures below. Step 1: Go to the government's official Passport Seva website, which is www.passportindia.gov.in.

How to login to Passport Seva online?

Step 1: Go to the official online Passport Seva portal, which is www.passportindia.gov.in. Step 2: On the left pane, there are four options in colors – Green, Orange, Blue, and Yellow. Step 3: Click on the green button, which says Existing User? Login.

How to register for a passport in India?

Step By Step Process For Passport Registration . Step 1: Go to the government’s official Passport Seva website, which is www.passportindia.gov.in. Step 2: On the left pane, there are four options in different colors – Green, Orange, Blue, and Yellow. Step 3: Click on the orange button, which says New User? Register Now.

How to register a new user?

Use the form for collecting the information for the user to be registered. Use the “POST” Method and use the action to send information to “/register”. Provide the links to Home page and login.


1 Answers

Here's the solution I came up with after reading about req.login:

app.post('/register', function(req, res) {   // attach POST to user schema   var user = new User({ email: req.body.email, password: req.body.password, name: req.body.name });   // save in Mongo   user.save(function(err) {     if(err) {       console.log(err);     } else {       console.log('user: ' + user.email + " saved.");       req.login(user, function(err) {         if (err) {           console.log(err);         }         return res.redirect('/dashboard');       });     }   }); }); 

I would like to clean it up a bit and think that the err section could be more robust, but this is a functioning solution. Note that is someone else implements this, they should be aware that it is tailored to using the passport-local strategy with email instead of username.

like image 139
surfearth Avatar answered Nov 21 '22 03:11

surfearth