Я делаю приложение android в сотрудничестве с коллегой, он - разработчик Android, и я очень мало знаю о android dev. Я делаю бэкэнд, я сделал логин и авторизацию, используя node.js, express и паспорт. js.
Я хостировал сервер локально и использовал почтальон для проверки процессов аутентификации и регистрации, все работало нормально. Я получаю коды статуса, которые хотел мой друг для своего Front-end. В части аутентификации с использованием паспорта. js при успехе я передаю req.user
, который должен возвращать тело пользователя, чтобы мой друг во внешнем интерфейсе мог использовать поле user.firstName
из пользовательского объекта для отображения приветственного сообщения.
Через Почтальон определяется тело пользователя, и я получаю объект пользователя со всеми полями в окне Почтальона, но через приложение выдает ошибку.
firstName Не определено свойство.
Паспорт. js logi c:
const LocalStrategy = require('passport-local').Strategy;
const mongoose = require('mongoose');
const bcrypt = require('bcryptjs');
//load user model
const User = require('../models/UserSchema');
module.exports = function(passport){
passport.use(
new LocalStrategy({usernameField: 'roll'}, (roll, password, done) => {
//find user
User.findOne({roll: roll})
.then(user =>{
if(!user){
return done(null, false, {message: 'Roll number not registered'});
}
//match password
bcrypt.compare(password, user.password, (err, isMatch) =>{
if(err) throw err;
if(isMatch){
return done(null, user);
}else{
return done(null, false, {message: 'Password incorrect'});
}
})
})
.catch(err => console.log(err));
})
);
/*passport.serializeUser( function(id, done) {
done(null, User.roll);
});
passport.deserializeUser(function(id, done){
User.findById(roll, function(err, user){
done(err, user);
});
});*/
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser((_id, done) => {
User.findById( _id, (err, user) => {
if(err){
done(null, false, {error:err});
} else {
done(null, user);
}
});
});
}
Маршрут входа в систему:
//Login Handle
router.post('/login', (req, res, next) =>{
console.log('/user/login')
passport.authenticate('local', {
successRedirect: '/success',
failureRedirect: '/failure',
session: true,
failureFlash: false
})(req, res, next);
//res.json(pass.user.name);
});
/ маршрут успеха:
router.get('/success', (req, res) => {
console.log(req);
let message = 'Login Succesful';
//let user = req.user.firstName
res.status(200).json({'message':message, 'user': req.user.firstName});
})