Após a página de autenticação passaporte bem sucedido não redirecionando

votos
0

Gostaria de pedir a sua ajuda para resolver o problema com o meu código, eu sou novo para web-development com apenas um mês de experiência. Meu problema é que, quando a minha página de inscrição foi autenticado com êxito usando a estratégia passaporte local, ele não redirecionar para a minha outra página. Já procurar um monte de perguntas anteriores aqui, mas não consigo encontrar uma resposta que se encaixam para o meu problema. Eu costumava ajax para enviar e validar os dados ao banco de dados (mongo). Por favor, consulte o meu código abaixo.

rotas:

router.post('/register',[

  check('firstname','First name name must have at least 2 characters')
  .isLength({ min: 2 }),

  check('lastname','Last name must have at least 2 characters')
  .isLength({ min: 2 }),

  check('username','Username name must have at least 2 characters')
  .isLength({ min: 2 }),
   
  check('email')
  .isEmail().withMessage('Please enter a valid email address')
  .trim()
  .normalizeEmail()
  .custom(value => {
    return findUserByEmail(value).then(User => {
          //if user email already exists throw an error
    })
    }),

  check('password')
  .isLength({ min: 8 }).withMessage('Password must be at least 8 chars long')
  .matches(/\d/).withMessage('Password must contain one number')
  .custom((value,{req, loc, path}) => {
    if (value !== req.body.confirmpassword) {
          // throw error if passwords do not match
      throw new Error(Passwords don't match);
    } else {
      return value;
    }
  }),
    
  check('terms','Please accept our terms and conditions').equals('yes'),

  ], function(req, res) {

    const errors = validationResult(req);

    if (!errors.isEmpty()) {     
        
    res.json({status : error, message : errors.array()});

    } else {


      var document = {
        firstname:    req.body.firstname, 
        lastname:     req.body.lastname,
        email:        req.body.email
        };
      
      var user = new User(document);  

      user.save(function(error){
        console.log(user);

        if(error){ 
          throw error;
        }  
        // res.json({message : Data saved successfully., status : success});
      });  
    }
    
    next()
    
  }, function(req, res) {

    Account.register(new Account({ username : req.body.username }), req.body.password, function(err, account) {
      if (err) {
        return res.render('register', { account : account });
      }
      // Redirect is not Working Here
      passport.authenticate('local')(req, res, function () {
        res.redirect('/');
      });
    });

});

AJAX Post:

$(function(){

  $(#msgDiv).hide();

  $(#btnSignup).on('click', function(event){
    event.preventDefault();

    var firstname        = $(#RegisterFormFirstName).val();
    var lastname         = $(#RegisterFormLastName).val();
    var username         = $(#RegisterFormUsername).val();
    var email            = $(#RegisterFormEmail).val();
    var password         = $(#RegisterFormPassword).val();
    var confirmpassword  = $(#RegisterFormConfirmPassword).val();
    var terms            = $('input[name=terms]:checked').val();


    $.ajax({
      url: /users/register,
      method: POST,
      data: { firstname: firstname, lastname: lastname, username: username, email: email, password: password, confirmpassword: confirmpassword, terms: terms }

      }).done(function( data ) {

        if ( data ) {
          if(data.status == 'error'){

            var errors = '<ul>';
            $.each( data.message, function( key, value ) {
              errors = errors +'<li>'+value.msg+'</li>';
              });

            errors = errors+ '</ul>';
            $(#msgDiv).removeClass('alert-success').addClass('alert-danger');
            $(#msgDiv).html(errors).show();
          }else{
            //$(#msgDiv).removeClass('alert-danger').addClass('alert-success').html(data.message).show(); 
          }
        }
      }); 

  });
});

BTW eu estou usando Node-Express. Agradeço antecipadamente por sua ajuda.

Publicado 20/09/2018 em 04:29
fonte usuário
Em outras línguas...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more