Ich bekomme Benutzerobjekt nicht zur nächsten Middleware nach passport.authenticate('local', {session: false})
Middleware erfolgreich übergeben.Koa v2, Benutzerobjekt nach Pass-Loca Login
So sieht mein Code aus.
Im Pass Lokale Strategie
passport.use(new localStrategy((username, password, done) => {
User.findOne({username}, (err, user) => {
if(err) { return done(err) }
if(!user) { return done(err) }
user.comparePasswords(password, async(err, isMatch) => {
if(!isMatch) { return done(null, false) }
done(null, user);
});
});
}));
die ich denken ist wohl das Benutzerobjekt zurück, wenn Login erfolgreich durchgeführt wird.
Da ist in meinem Routen Ich habe
const requireAuth = passport.authenticate('local', {session: false});
router.post('/login', requireAuth, signIn);
Wie wenn ich traf /signin
der Pass-Middleware genannt wird und dann, wenn es signIn
Middleware getan wird etwas namens ich erwarte ,mit meinem angemeldeten Benutzerobjekt.
Aber wenn ich überprüfe, in meinem Signin Middleware nichts übergeben wird (In Anforderung oder Antwort) Objekt.
Hier ist meine Signin Middleware
const signIn = async (ctx, next) => {
const res = ctx.response;
const req = ctx.request;
console.log('response', res); //- Nothing from passport
console.log('request', req); //- Nothing from passport
await next();
};
Ich brauche die protokolliert passiere in Benutzern von Pass in der nächsten Middleware, damit ich den Benutzer-ID verwenden kann, um eine jwt zu machen.
Vielen Dank.
Ich glaube nicht, const res = erwarten ctx.response; '&' const req = erwarten ctx.request; 'ist richtig, weil dies erwartet, dass die Anfrage und Antwort Objekte im Kontext Versprechen noch ausgeführt werden, aber Ich denke nicht, dass das der Fall ist, oder? –
@OvidiuDolha nein, es ist nicht, ich versuchte es auf die normale Weise (ohne 'wartet ') herum, aber das hat auch nicht funktioniert. Lemme den Code beheben. – ArchNoob