Ошибка: не удалось сериализовать пользователя в сеанс - PullRequest
0 голосов
/ 31 октября 2019

У меня проблемы с NodeJS с местным паспортом. Я установил паспорт в файл экспорта, чтобы вызвать его. Я вызвал сериализацию и десериализацию, но все равно говорится, что он не может поместить пользователя в сеанс

App.js

const   express = require( `express` ),
             app = express( ),
             passport = require( `passport` ),       
             passportConfiguration = require( `./config/passport` ),
             teacherRouter = require( `./routes/teacher` );

passportConfiguration( passport );
app.use( passport.initialize( ) );
app.use( passport.session( ) );

passport.js

const   LocalStrategy = require( `passport-local` ).Strategy,
             configDatabase = require( `../config/database` ),
             mysql = require( `mysql2` ),
             con = mysql.createConnection( configDatabase );

module.exports = ( passport ) => {
    passport.use( new LocalStrategy( ( username, password, done ) => {
        try {
            con.query( `SELECT * FROM tbl_teachers WHERE username = ?`, [ username ], ( error, results ) => {
                if ( error ) throw error;

                if ( results ) {
                    if( password == results[ 0 ].password ) {
                        return done( null, results[ 0 ] );
                    } else {
                        return done( null, false, {message: 'Wrong password'} );
                    }
                } else {
                    return done( null, false, { "message": `'${ username }' not found` } ); 
                }
            } );
        } catch ( error ) { console.log( error ) }
    } ) );

    passport.serializeUser( ( user, done ) => done( null, user.ID ) );
    passport.deserializeUser( ( ID, done ) => con.query( `SELECT * FROM tbl_teachers WHERE id = ?`, [ ID ], ( error, results ) => { done( error, results[ 0 ] ) ) );
};
...