2015-07-12 2 views
1

Я использую локальную стратегию passportjs:passportjs - как получить доступ сообщение о состоянии в случае 401

passport.use(new LocalStrategy(
function(username, password, done) { 
    if (username === "myuser" && password === "mypass") 
     return done(null, { name: "myuser" }); 

    return done(null, false, { data: 'Incorrect username and/or password' }); 
})); 

В случае 401 статуса, я хотел бы, чтобы клиент получал свое статусное сообщение: «Неверное имя пользователя и/или пароль». Вместо этого все, что я вижу в теле ответа, - это слово «Несанкционированное». Как я могу получить доступ к сообщению?

Спасибо.

ответ

0

Вы можете получить доступ к объекту, который вы передаете третьим параметром, используя req.authInfo. Затем вы можете извлечь из него data.

0

Проблема заключается в следующем: Когда я принимаю запрос POST:

app.post('/login', passport.authenticate('local'), function(req, res) { 
    console.log(req.authInfo); 
    res.send(req.user); 
}); 

console.log (req.authInfo) не дозвонились в случае 401 статуса, только в случае 200 Как это исправить?

0

Посмотреть ответ этого поста: passport.js - Access fail message after 401 error

Вы должны поставить passport.authenticate в функции ответ:

app.post('/login', function(req, res, next) { 
    passport.authenticate('local', function(err, user, response) { 
     if(!response.success) { 
      res.status(401).json({ 
      message: 'Incorrect username and/or password' 
      }); 
     } 
    })(req, res, next); 
}); 

Очевидно, что вы также положить в вашей локальной стратегии третьих паров в

if(InvalidPassword or user not exist) { 
    return next(null, false, { success: false }); 
} 
Смежные вопросы