2017-03-10 1 views
0

다음 프로그램은 사용자 이름/암호 인증에 passportjs을 사용합니다. 나는 실수를 저 지르지는 않지만 항상 실패 페이지로 리디렉션됩니다. 다시 로그인 페이지로 돌아갑니다. 여권 미들웨어 인증 실패가 발생하지 않습니다.

var passport = require('passport') 
    , LocalStrategy = require('passport-local').Strategy 
    , express = require('express'); 


var app = express(); 

app.listen(3000); 

app.use(express.static(__dirname+'/public')); 
app.use(passport.initialize()); 
app.use(passport.session()); 

passport.use(new LocalStrategy(
    function(username, password, done) { 
    console.log(username + ':username'); 
    console.log(password + ':password'); 
    return done(null, [{username:'foo'}]); 
    } 
)); 

app.get('/login',(req,resp) => { 
    var options = { 
     root: __dirname + '/public/' 
    }; 

    resp.sendFile('login.html',options); 
}); 

app.post('/login', 
    passport.authenticate('local', { successRedirect: '/',failureRedirect: '/login'}) 
); 

나는 passportjs의 작업을 이해하려고 노력하고 있는데 미들웨어 passport.use(new LocalStrategy(가 호출되지 없구요 것을 알 수있다. 그 이유를 모르지만 실패의 근본 원인이 될 수 있습니다.

답변

0

아마도 여권이 필요합니다. 여권 설정 전에 app.use(express.session({ secret: 'keyboard cat' }));을 추가하십시오.

당신은 당신은

app.post('/login', 
    passport.authenticate('local', { successRedirect: '/',failureRedirect: '/login'}) 
); 
+0

미들웨어를 아직 입력하지 않았습니다. –

0

local 그래서 내가 POST 요청을 구문 분석 passportjs에 필요한 body parser 모듈을 잃어버린이 예에서 이름이 전략을 호출

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

passport.use('local', new LocalStrategy(
    function(username, password, done) { 
    console.log(username + ':username'); 
    console.log(password + ':password'); 
    return done(null, [{username:'foo'}]); 
    } 
)); 

사용자 전략의 이름을 지정하고 직렬화한다 . 다음은 완전한 코드입니다.

var passport = require('passport') 
    , LocalStrategy = require('passport-local').Strategy 
    , express = require('express') 
    , bodyParser = require('body-parser'); 


var app = express(); 

app.listen(3000); 

app.use(express.static(__dirname+'/public')); 
app.use(bodyParser.urlencoded({ extended: false }));// parse application/x-www-form-urlencoded 
app.use(bodyParser.json()); // parse application/json 
app.use(passport.initialize()); 
app.use(passport.session()); 

passport.use('local',new LocalStrategy(
    function(username, password, done) { 
    console.log(username + ':username'); 
    console.log(password + ':password'); 
    return done(null, {username:username}); 
    } 
)); 

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

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


app.get('/login',(req,resp) => { 
    var options = { 
     root: __dirname + '/public/' 
    }; 

    resp.sendFile('login.html',options); 
}); 

app.post('/login', 
    passport.authenticate('local', { successRedirect: '/',failureRedirect: '/login'}) 
);