Mohammad Jawad Barati
Mohammad Jawad Barati
خواندن ۱ دقیقه·۴ سال پیش

کار با پکیج passportjs

بدون مقدمه سر اصل مطلب

یه middleware هست. تنها هدفش: authenticate کردن ریکوئست هاس (پس یه موقع نیای توش authorization و ... هم بزاری. کد زدن ماژولار). قبلا فقط user name و password داشتیم. الان OAuth هم داریم.

ما توی passport به هر کدوم از این مکانیزم های authentication یه strategy میگیم. هر کدوم هم یه پکیج جداگونه هستن.




متد authenticate

این متد یه 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 شده باشن.

پاس دادن callback به این متد

پارامتر های این متد:

  • پارامتر err: اگه اروری رخ بده این پارامتر دارای مقدار خواهد بود
  • پارامتر user: اگه عملیات fail بشه مقدار این پارامتر false میشه
  • پارامتر info: اگه اون استراتژی مورد استفاده بخواد اطلاعات بیشتری برات بفرسته توی این پارامتر میریزه.
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 استفاده میشه.

passportjsnodejsdeveloperskhauthentication
برنانه نویس، مدرس، محقق. عاشق انیمه هستم و دنبال چالش ها جدید.
شاید از این پست‌ها خوشتان بیاید