یه middleware هست. تنها هدفش: authenticate کردن ریکوئست هاس (پس یه موقع نیای توش authorization و ... هم بزاری. کد زدن ماژولار). قبلا فقط user name و password داشتیم. الان OAuth هم داریم.
ما توی passport به هر کدوم از این مکانیزم های authentication یه strategy میگیم. هر کدوم هم یه پکیج جداگونه هستن.
این متد یه middleware هست که بهش strategy رو میدی. این متد یه Connect middleware هست. به همین خاطر خیلی راحت میتونی توی expressjs ازش استفاده بکنی.
به صورت پیشفرض 401 به عنوان جواب ریکوئستی که عملیات authetication اون fail شده، فرستاده میشه و اگه هم عملیات fail نشه middleware بعدی اجرا میشه و توی req.user اطلاعات کاربر قرار میگیره. حالا اگه بخوای پیام اختصاصی هر استراتژی رو سمت فرانت بفرستی باید failureFlash رو برابر با true بزاری:
app.post('/login', passport.authenticate('local', { successRedirect: '/', failureRedirect: '/login', failureFlash: true } ));
البته میتونی یه string هم به عنوان پیغام بزاری. برای اینکه این کار درست انجام بشه باید connect-flash نصب بشه.
نکته: قبل از استفاده از این متد باید استراتژی ها config شده باشن.
پارامتر های این متد:
app.get('/login', function(req, res, next) { passport.authenticate('local', function(err, user, info) { if (err) { return next(err); } if (!user) { return res.redirect('/login'); } req.logIn(user, function(err) { if (err) { return next(err); } return res.redirect('/users/' + user.username); }); })(req, res, next); });
برای این منظور از passport.use استفاده میشه.