Моя проблема в том, что я отправляю данные для входа из внешнего интерфейса через 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);
}
})();
}));
}