Angular Nodejs Postgres логин с паспортом - PullRequest
0 голосов
/ 02 апреля 2020

Моя проблема в том, что я отправляю данные для входа из внешнего интерфейса через API для внутреннего интерфейса. Данные поступают в паспорт js (я проверил это с consol.log), но после этого ничего не происходит.

Моя цель состоит в том, чтобы индекс. js мог получить данные после того, как они сопоставлены с данные базы данных и маршрут к указанному URL.

Код ошибки:

ОШИБКА: ошибка (в обещании): ответ с состоянием: 0 для URL: ноль
POST http://127.0.0.1: 3000 / API / логин / net :: ERR_INVALID_REDIRECT

Мой компонент входа в систему:

login(){
    this.loginservice.validate(this.userUsername, this.userPassword)
    .then((response) => {
      this.loginservice.setUserInfo({'user' : response['user']});
      this.router.navigate(['/dashboard']);

    })
  }

Мой сервис входа в систему:

loggedInUserInfo : {};

    public setUserInfo(user){
        localStorage.setItem('userInfo', JSON.stringify(user));
      }

    public validate(username, password) {
      var loginData = {username: username, password: password}
        return this.http.post( BASE_URL + 'login/', loginData).toPromise()
      }
    //   username=asd&password=asd
      public isAuthenticated() : Boolean {
        let userData = localStorage.getItem('userInfo')
        if(userData && JSON.parse(userData)){
          return true;
        }
        return false;
      }

СТОРОНА СЕРВЕРА:

index. js

var express = require('express');
var router = express.Router();
var passport = require('passport');

// http://localhost:3000/
router.get('/', function(req, res, next) {
    res.status(200)
      .json({
        status: 'successa',
        message: 'Live long and prosper!'
      });
});


router.get('/api/login', (req,res) => {
  if(req.isAuthenticated()) {
      res.redirect('127.0.0.1:4200/dashboard/control-center');  
  } else {
      res.render('127.0.0.1:4200/login', {
          message: req.flash('loginMessage')
      });
  }
});

router.post('/api/login', passport.authenticate('local-login' , {
  successRedirect: '127.0.0.1:4200/dashboard/control-center',
  failureRedirect: '127.0.0.1:4200/login',
  failureFlash: true
}));

let checkAuthentication = (req,res,next) => {
  if(req.isAuthenticated()){
      req.isAuthenticated();
      next();
  } else{
      res.redirect('127.0.0.1:4200/login');
  }
}

module.exports = router, passport;

аттестат. js

const LocalStrategy = require('passport-local').Strategy;
const db = require('../routes/api/database/database_connenct');
module.exports = (passport) => {
    passport.serializeUser((user, done) => {
        done(null, user);
    });

    passport.deserializeUser((user, done) => {
        done(null, user);
    });

    passport.use('local-login', new LocalStrategy({
        username: 'username',
        password: 'password',
        passReqToCallback: true
    }, function(req, username, password, done)
    { 
        console.log('authentication in-progress' + username + password)
        const query = `SELECT * FROM users WHERE username = '${username}'`;
        (async () => {
            //Verificar que los datos sean correctos
            try {
                const res = await db.query(query);
                if(res.rowCount == 0) {
                    return done(null, false);
                }
                if(res.rows[0].password != password)  {
                    console.log('Password Check - Passport' + password)
                    return done(null, false);
                }
                return done(null, res.rows[0]);
            } catch(err) {
                return done(null, false);
            }
        })();
    }));

}
...