Мой код не может быть перенаправлен по паспорту JS. Проблема аутентификации - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь пройти аутентификацию, используя паспорт js, и если аутентификация прошла успешно, перенаправить на домашнюю страницу, но она не может перенаправить

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

отправляется первая форма входа и форма действия = "/ users / create-session" , , .

// это страница контроллера действий ...

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




router.post('/create-session',passport.authenticate(
    'local',
    {failureRedirect:'/users/signin'},
),usersController.createSession);

. , , // паспорт локальной страницы ....

const passport=require('passport');
const LocalStrategy=require('passport-local').Strategy;
const User=require('../models/user');

// аутентификация с использованием паспорта

passport.use(new LocalStrategy({
    usernameField:'email'
    },
    function(email,password,done){
        //find a user and establish the identity
        User.findOne({email:email},function(err,user){
              if(err){
                console.log('Error in finding user --> Passport');
                return done(err);
            }
            if(!user||user.password!=password){
                console.log('Invalid Username/Password');
                return done(null,false);
            }
              return(null,user);
             })
    }
));

// сериализация пользователя, чтобы решить, какой ключ должен храниться в куки

passport.serializeUser(function(user,done){
    done(null,user.id);
})

// десериализация пользователя с помощью ключа в куки

passport.deserializeUser(function(id,done){
    User.findById(id,function(err,user){
        if(err){
            console.log('Error in finding User --> Passport');
            return done(err);
        }
        return done(null,user);
    });
})

module.exports=passport;

. , , , , , //usersController.createSession page , .

module.exports.createSession=function(req,res){

    return res.redirect('/');

}

Ожидалось, что после входа в систему, если пароль верный, он должен будет перенаправить на «locolhost: 8000 /», но колесо продолжает работать, и после того, как иногда появляется сообщение о том, что страница не работает, локальный хост не отправил здесь никакой код данных данных

1 Ответ

0 голосов
/ 11 июля 2019

в коде // аутентификация с использованием паспорта

passport.use(new LocalStrategy({
usernameField:'email'
},
function(email,password,done){
    //find a user and establish the identity
    User.findOne({email:email},function(err,user){
          if(err){
            console.log('Error in finding user --> Passport');
            return done(err);
        }
        if(!user||user.password!=password){
            console.log('Invalid Username/Password');
            return done(null,false);
        }
          return(null,user);
.
.

-----------------------------------------------
//instead return(null,user); .... return done(null,user);  must be there
.
.
.

         })
}
));
...