2017-12-28 24 views
0

나는 내 웹 사이트에 사용자를 인증하기 위해 노력하고있어 "로컬"나는이 오류가 발생했습니다알 수없는 인증 전략

'로컬 로그인'

내가 변화 시도했습니다 알 수없는 인증 전략 전략의 이름, 다른 스레드를 읽었으나 솔루션을 찾지 못했습니다. 그런 다음

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

를 다음과 같이 사용 : 당신의 app.use() 방법 전에

const passport = require('passport'); 
const LocalStrategy = require('passport-local').Strategy; 

을 :

npm install passport passport-local --save 

그런 다음 아래처럼 여권을 가져옵니다과 설치를 확인

// Passport 
module.exports = function(passport) { 
    passport.serializeUser(function(user, done) { 
    done(null, user.id); 
}); 

passport.deserializeUser(function(id, done) { 
    connection.query('SELECT * FROM `users` WHERE `id` = ' + connection.escape(id), function(err, rows) { 
     done(err, rows[0]); 
    }); 
}); 

passport.use('local-login', new LocalStrategy({ 
    usernameField : 'username', 
    passwordField : 'password' 
}, 
function(req, username, password, done) { 
    connection.query('SELECT * FROM `users` WHERE `username` = ' + connection.escape(username), function(err, rows) { 
     if(err) 
      return done(err); 
     if(!rows.length) { 
      return done(null, false, req.flash('loginMessage', 'Invalid username or password. Please try again.')); 
     } 
     if(!(rows[0].password == password)) 
      return done(null, false, req.flash('loginMessage', 'Invalid username or password. Please try again.')); 

     return done(null, rows[0]); 
    }); 
    })); 
} 

// Express Router 
app.use(sessionMiddleware); 
app.use(passport.initialize()); 
app.use(passport.session()); 
app.use(flash()); 
app.use('/static', express.static('./static')); 

app.post('/login/auth', passport.authenticate('local-login', { 
    successRedirect: '/dashboard', 
    failureRedirect: '/', 
    failureFlash: true 
})); 

답변

1

우선 .

app.post('/login/auth', passport.authenticate('local', { 
    successRedirect: '/dashboard', 
    failureRedirect: '/', 
    failureFlash: true }), 
function(req, res) { 
    res.redirect('/'); 
}); 

더 많은 정보를 원하시면 : 내가 설정에 포함해야합니까 passport-local

+0

/여권 라우터에 마지막으로

passport.use(new LocalStrategy({ usernameField : 'username', passwordField : 'password' }, (req, username, password, done) => { // Your logic here... ... .. })); } 

을 (필요는 첫 번째 인수로 '로컬 로그인'을 포기하지합니다) ? 그 파일이 없습니다 – GhoSTBG

+0

@GhoSTBG 업데이트 된 답변을 확인하십시오. – gokcand

+0

여전히 작동하지 않습니다. – GhoSTBG