از Pista Academy حمایت کنید
خلاصه آموزشی
مرور سریع مفاهیم اصلی پیش از تماشای کامل یا برای جمعبندی بعد از آموزش.
در جلسه 17 دوره فریم ورک FastAPI، مدرس به بررسی فرآیند آتنتیکیت در یک اپلیکیشن میپردازد. ابتدا یک فانکشن برای اعتبارسنجی کاربران نوشته میشود که اطلاعات ورودی (یوزرنیم و پسورد) را با دیتابیس مقایسه میکند. اگر کاربر وجود داشت و پسورد درست بود، یک توکن اکسس به عنوان پاسخ ارسال میشود. سپس به پیادهسازی جبلیتی (JWT) میرویم تا توکن اکسس را ایجاد کنیم. الگوریتم، پیلود و کلید سریالیزه (سکرت کی) در این فرآیند استفاده میشوند. در ادامه، ساختار توکن در یک پروژه FastAPI بررسی میشود و توضیح میدهد که چگونه میتوان توکن را با استفاده از یک کلاس تعریف کرد و آن را بازگردانی کرد. هر توکن سه قسمت دارد که یکی از آنها سیگنیچر یا امضا است که به صورت خودکار تولید میشود و اطلاعات مربوط به کاربر را حمل میکند.
نکات کلیدی
پیادهسازی فانکشن اعتبارسنجی کاربر (آتنتیکیت) با مقایسه اطلاعات ورودی با دیتابیس.
ایجاد توکن اکسس با استفاده از جبلیتی (JWT) شامل الگوریتم، پیلود و کلید سریالیزه.
توکن با استفاده از یک کلاس تعریف و بازگردانی میشود.
هر توکن سه قسمت دارد که یکی از آنها سیگنیچر یا امضا است.
پرسشهای رایج
پاسخ کوتاه و مستقیم به پرسشهایی که معمولاً هنگام یادگیری این موضوع مطرح میشوند.
توکن اکسس در FastAPI با استفاده از جبلیتی (JWT) ایجاد میشود. برای این کار، الگوریتم، پیلود و کلید سریالیزه (سکرت کی) به کار میروند.
هر توکن در FastAPI سه قسمت دارد که یکی از آنها سیگنیچر یا امضا است که به صورت خودکار تولید میشود و اطلاعات مربوط به کاربر را حمل میکند.
توکن میتواند با استفاده از یک کلاس تعریف شود و سپس به صورت متفاوت بازگردانی شود.
آخرین بهروزرسانی محتوای متنی:
دوره جامع FastAPI از صفر تا استقرار در دنیای واقعی اگر دنبال ساخت APIهای حرفهای، سریع و امن با پایتون هستی، این دوره دقیقاً برای توست. قدمبهقدم از مبانی شروع میکنیم و تا پیادهسازی در محیط تولید (Production) پیش میرویم: از راهاندازی و طراحی Endpointها، پایگاهداده، احراز هویت و مجوزها، تستنویسی و مهاجرت دیتابیس تا نسخهسازی با Git و دیپلوی نهایی. این دوره چه چیزهایی بهت میدهد؟ شناخت کامل FastAPI و مزیتهایش (سرعت بالا، تایپهینتها، مستندسازی خودکار، async) ساخت RESTful APIهای تمیز و ماژولار با الگوهای حرفهای پیادهسازی لایههای Authentication & Authorization (مانند توکنهای JWT و نقشها) اتصال به پایگاهداده و آمادهسازی Database برای تولید به همراه مفاهیم اساسی Performance و ایمنی داده انجام مهاجرتهای دیتابیس (Alembic) بدون از دست رفتن داده Unit & Integration Testing برای اطمینان از کیفیت کد ساخت یک اپلیکیشن فولاستک با API بکاند FastAPI و یک فرانتاند رایج مدیریت نسخهها و گردشکار تیمی با Git Deploy امن و استاندارد روی سرور یا سرویسهای ابری 🎯 مخاطبان این دوره برنامهنویسان پایتون که میخواهند APIهای سریع و مقیاسپذیر بسازند بکاند دولوپرهایی که به دنبال Production-Ready FastAPI هستند دانشجویان یا فریلنسرهایی که میخواهند با نمونهکارهای واقعی، وارد بازار کار شوند پیشنیاز: آشنایی پایه با پایتون (متغیرها، توابع، ماژولها). بقیه را در خود دوره یاد میگیری. خروجی نهایی تو پس از دوره یک بکاند استاندارد و Production-Ready با FastAPI تسلط بر احراز هویت و مجوزها و الگوهای امنیتی رایج مهارت در مهاجرتهای دیتابیس و نگهداری داده در طول توسعه توانایی نوشتن تست برای اطمینان از کیفیت و کاهش ریسک تجربه ساخت یک پروژه فولاستک برای رزومه و پرتفولیو آمادگی برای دیپلوی و نگهداری سرویس در محیط واقعی چرا این دوره متفاوت است؟ پروژهمحور و کاملاً عملی؛ هر فصل یک خروجی ملموس میسازد تمرکز روی آنچیزی که در محیط تولید واقعاً به آن نیاز داری سادگی بیان + استانداردهای حرفهای = یادگیری سریع اما اصولی چطور از دوره استفاده کنم؟ ویدیوها را به ترتیب ببین و همزمان کدنویسی کن هر فصل یک Feature واقعی بساز در انتها آمادهای کدت را روی سرور/ابر بالا بیاوری اگر این دوره برات مفید بود، لطفاً لایک، سابسکرایب و کامنت یادت نره تا فصلهای جدیدتر و پروژههای بیشتر بسازیم 🙌
بحث آتنتیکیت.
ما میخوایم ببینیم که این یوزری که در حقیقت یوزر پسش رو زده آیا داخل دیتابیس
اون اطلاعاتش هست یا نیست. میخوام
آتنتیکیت بکنیم اصطلاحاً
میام چیکار میکنم؟
توی [گلویش را صاف میکند]
همین پایین
یه دونه ادسان روتر.پست
پست
اسلش توکن
لاگین فور
اکسس توکن ببینید بچهها وقتی یوزر لاگین میکنه خب و لاگینش موفقه
از سمت سرور یک توکنی ارسال میشه برای در
حقیقت کاربر ما میخوایم اونو پیادهسازی
بکنیم.
فعلاً من یه توکن اینجا بنویسم
[صدای خرناس]
باید بریم اپون کار بکنه و بعد بریم جلو.
خب من اینو کنم
خب س
خب میگم که ی ی یویکون مین دو نقطه اپ دش ریلود
یه توکن دارم ترای کنم یه توکن باید برگردونم درسته خب بریم سراغ ادامه کارمون
من یه قص اینو استاپش میکنم فعلاً چون
احتمالاً میخوام چیزی نصب بکنم
بیایم اینجا خب بریم سراغ ادامه کار توی
ادامه کار ما نیاز داریم اول یه چیزی رو
نصب بکنیم بچهها خب یه چیزی باید نصب بشه
یه پکیجه به نام پیپ
اینستال پایتون داش دش مولتی پارت مولتی پارت اگه
درست بنویسمش فکر کنم درست نوشتم
خب این دست شد حالا میام بالا یه چیزی رو باید ایمپورت کنم لازمش دارم میگم فرام
فست ایپیدا
سکورتی یه چیزی داریم به نام
تو پسورد ریکوست فورم اینو بیارید خب بیایم
پایین [صدای خرناس]
[گلویش را صاف میکند][صدای سرفه] اینجا اینجا
میگم فورم دیتا دو نقطه
انوتیتد
حالا این کارا رو داریم انجام میدیم که در
حقیقت بریم سراغ همون
به قول گفتنی آتنتیکیشنمون
[صدای خرناس]
خب یه بار دیگه بریم چک کنیم تا اینجا رو ای وای اینو چرا زدم که نصب شده بود خب
بیایم اینجا یه رفرش اینجا نگاه کنید الان
بچهها یه فرمتی پیدا کرده خب خب میگه اون
بادی که من نیاز دارم برای این ریکوست که
به تو توکن بدم ایناست یوزرنیمو میخوام و
پسوردو میخوام خب [صدای خرناس]
یه تستم بکنی حالا فعلاً آ یوزر پسورد
میخواد
یه چیزی الکی بزنیم فعلاً ببینیم که قبول
میکنه یا نه توکنو برگردون ما الان هرچی
بدیم برمیگردونه چون چکی نذاشتیم براش
خب حالا باید چیکار کنیم
باید بریم بگیم که این یوزر پسی که کاربرم
وارد میکنه رو برم تو دیتابیسم چک کنم
ببینم آیا معادل این من یوزری دارم یا
ندارم.
بریم اینجا من میام بالا یه فانکشن تعریف
میکنم اینجا
بذار اینجا بنویسم خب
میگم دف
اتنتیکتد اتنتیکت
یوزر میذارم اتنی تیکت یوزر خب به عنوان
ورودی یه یوزرنیم نیاز داره از جنس
استرینگ و یه پسورد
میگم که اول باید برم دنبال یوزره بگردم میگم برو
تو دیتابیس یه کوری بزن
خب
همه یوزرا رو بیار
بعد فیلتر کن
یوزرایی که
یوزرنیمشون
برابر این یوزرنیمیه که به عنوان ورودی
دادن و اولین چیزی هم که پیدا میکنی
برگردون
حالا اگه یوزره نبود
یوزری وجود نداشت
ریترن بکن فالس
اگر پسورده تطبیق نداشت پسوردو اول باید هش
بکنم بعد مقایسه بکنم
دات وریفای میگم پسوردی که کاربرم وارد کرده
رو با پسورد یوزر تو دیتابیس مقایسه
اگر مشکلی داشت میشه فالس و در نهایت اگه این د تا مرحله رو رد کنه میشه ریترن ترو
یعنی آدنتیکیت شده پس اگر یوزری وجود داشت
پسوردشم درست بود ریترن میکنه تو رو این
تا اینجا
نکته بعدی حالا ما برگردیم پایین اینجا من
اینو ببندم
یه یه دونه استاپشم بکنم که خطا نده
متأسفانه خطا رو داد [خنده]
اینجا بودیم حالا ما از این فانکشنی که نوشتیم باید
استفاده بکنیم
و بگیم [گلویش را صاف میکند] که یوزر
مساوی
آتنتیکیت یوزر حالا از این فرم دیتایی که اومده
یه یوزرنیمو لازم دارم
و یه دی وی اینم که باید پاس میداد حالا میگم ایف
یوزر
بیایم اینجا اگرم
همه چی اوکی بود میشه ساکسسفل اتنتیکیت
اگه همه چی اوکی بود بریم چک کنیم اپلیکیشنو
یو وی یویک
اپ دش دش
خب این ران شد یه رفرش میدم اینو خب
بیایم این چک کنیم ببینیم درسته یا نه. من
یه چیز الکی میزنم فعلاً
آتنتیکت فل شد. چرا؟ چون خب الکی زده بودم
اصلاً چیزی نداریم ما
یوزر پسوردو چی گذاشته بودیم جلسه قبل؟
امیدوارم که درست یادم باشه. فکر کنم این بود.
آره درسته. الان که یوزر پسو که درست زدم
ساکسسول داد بهم.
خب ما یوزرمون الان میتونیم آتنتیکیتش بکنیم و بفهمیم که آیا واقعاً همچین یوزری
با این پسورد وجود داره یا نه. حالا که
آتنتیکیت شد من باید یک توکنی رو ارسال
بکنم برای سمت در حقیقت کلاینتم. خب
چهجوری توکنو جنریت بکنیم؟ یکی از
روشهایی که وجود داره و روش خیلی مرسومی
استفاده از جبلیه. خب برای استفاده از
جیبلیتی اول باید نصبش بکنیم.
میام اینجا
من باز این پروژه رو استاپ میکنم خب میگم
که پیپستار
یه چیزی داریم به نام پایتون
دش خوزه [صدای خرناس]
میدونم اسمش عیبه
گرافی اگر درست بنویسم ایشاالله حالا ببینیم درسته یا نه؟
بله درست بود خب
برای استفاده از جبل تی ما نیاز داریم که
در حقیقت اینو نصب بکنیم خب اینو فعلاً
میبندم حالا بریم جیبلیتی رو پیاده سازی
بکنیم
اول باید ایمپورتش کنم میام بالا میگم که
برو از خوزه فرام
خوزه ایمپورت بکن جبل تی خب
این از
در ادامه من برای اینکه بخوام توکن درست کنم بچهها
توکن هر توکن جابلیتی ه تا قسمت داره
یه قسمت میشه اون الگوریتمی که ما قراره
استفاده بکنیم یه قسمت میشه پیلودمون که
اطلاعات یوزرمونه و یه قسمتشم میشه یه
دونه کلید یه سکرت کی میشه من اینجا میام
این د تا رو میسازم یه سکرت کی میسازم و
سکرت کی خب یه دونهم الگوریتم
الگوریتم
الگوریتممون میشه اچ s ۲۵۶
خب حالا برای سکرت کی من چیکار کنم؟ یه
دونه استرینگ رندم میخوام با این کارو
میکنم میذارم اپن اس
رند دش هگز
۳۲ن
خب برای نصبش یه راه دیگه هم هست اینه بیایم خود فایلشو دانلود کنیم ۶ میگم
بیشتر نیست سایتشم این بالا زده بچهها از
اینجا اینو دانلودش میکنم
بیایم حالا یه چک بکنیم اپن اسسر دش دش
ورژن
خب این فایلش نصب شد فقط یه مرحله داره که باید اینو توی این در حقیقت اینوامنت
سیستمتون اد بکنید اینوامنت وریبل خب
چیکار میکنید میاد تو این مسیر
تو این مسیر جایی که اپن اسس نصب شده پوشه
بین این آدرسو کپی میکنید. خب بعد
اینو باز میکنید میاید اینجا اینپتو باز
میکنید اینجا یه دونه اد میکنید با همون
آدرس وقتی اد بکنید تمام
نگاه کنید
اینجا وقتی بیاد بزنید اپن اس اس ورژن
باید بهتون نشون بده که این اد شده حالا
همین جا اصلا همین جا بزنیم بزنیم اپن اس
رند هسش
یادم رفت
دش هس ببخشید
دش ه ۳۲ هم اینجا بزنید یه دونه استینگ
بهتون برمیگرده اینو کپی میکنید
میاید تو پروژهتون با اون سیکرت کی
استفاده میکنید
اینا خب بریم جلو ما الان سیکرت کیمونو
داریم الگوریتممونم داریم بریم توکنو
جنریت بکنیم
یه دونه فانکشن من مینویسم برای اینکه بخواد این کارو بکنه. خب
اینجا بعد از این فانکشن مینویسم که اون فانکشن
رو کجا نوشتم؟
اینو اینجا
اینجاهم بچهها به جای ترو بذار بگیم یوزر
برگردونه چون یوزر لازم داریم خب میگم دف
کرت
اکسز توکن
یه یوزرنیم میخواد به عنوان ورودی
استیآر
یه دونه یوزر آیدی میخواد
باز استیآر بخش اینتیجر بودیم
بعد یه اکس
پایرزتا میخوایم هر توکنی بچهها یه زمانی
باید دقیق تموم بشه اکسپایر بشه یه چیزی
داریم به نام تایم
دلتا اینم بذارید ایمپورت کنم بذار اینجا
خودش میگه این فرام دیتا بله دقیقاً از
اینجا باید بیاد بچه من خود دیتا تیمم
ایمپورت کنید از چون لازم داریم الان اینم
بذارید اینجا باشه حالا
بریم اینو بنویسیم
پس هر توکنی یه اکسپرت تایمم داره
مینویسم انکد مساویست با یه دونه آبجکت
درست میکنم ساب
یوزرنیم
آیدی یوزر آیدی
[گلویش را صاف میکند]
میگم اکسپایرز
مساوی باشه با د تا.
یوتی
سی نا
به اضافه اون اکسپایر دلتایی که مشخص کردیم
ای اکسپی د نقطه
ایکسپایرز
بعدم ریترن بکنم
jwدا
ان کد اون انکودو بهش میدم
سیکریت کرم بهش میدم
و الگوریتممونم باید مشخص کنیم که میشه
الگوریتم
خب
پس این فانکشن میاد توکنو برا من
برمیگردونه کجا باید توکنو برگردونم من
این پایین اینجا که یوزرم وجود داشت
اینجا بیام بگ بگم که توکن
کرید اکسس توکن اون یوزری که اطلاعاتش برگشته یوزرنیم
تایم دلتا هم میذارم روی مثلاً چند دقیقه بذاریم
مثلاً ۲۰ دقیقه اکسپایر شد
پس الان من توکنو جنریت کردم یوزر بعد از
اینکه لاگین میکنه اطلاعاتشو میگیرم و
توکنو جلت میکنم در نهایتم میگم توکنو
برگردونه
خب بریم یه چک بکنیم
خب اینو برگردون بچهها این توکن منه که ۳ تا قسمت داره یادتون باشه گفتم یه قسمت
خود در حقیقت توکنمه یه قسمت پیلودمه یه
قسمتم که اولشه که
یادم رفت
الگوریتمم بود سه تا قسمت دارم
خب حالا توی جواب بچهها من نمیخوام خود
توکنو این شکلی برگردونه میخوام یه ذره
عوضش کنم میایم بالا یه کلاس درست میکنم
توکن دو نقطه استیآر و
توکن تایپ
دو نقطه استیآر
ولگول نمیخواد داشته باشم خب حالا میایم
پایین اینجا که میخواد توکنو ریترن بکنه
میگم توکنو ریترن نکن بده به این
کلاس توکن
یه ذره ترتمیز برش گردونه
چرا اینجوری نوشتم در صورت شد میگم که اکسز توکن
دو نقطه خود توکنه
بعد توکن تایپم
باشه
بیرر
نگاه کنید به این شکل برگردون الان درست شد خب
اینم از این نکته ما تونستیم توکنمونم
جنریت بکنیم و
یه نکته ریزی دیگه هم داره بچهها یه چیزی
نشونتون بدم
بیایم این توکنه رو
ولیدیشنشو چک کنیم من این توکنه رو کپی
میکنم
من یه چیزم راجع به توکن اشتباه گفتم الان
اینجا بهتون بگم هر توکن بچهها
گفتم سه قسمت داره دیگه این قسمت سومو بهش
میگن در حقی حقیقت سیگنیچر بهش میگن امضاش
بهش میگن من اینو اینجا میندازم نگاه
کنینا میگه با این الگوریتم بوده با جل
دبلیو تی بوده این یوزرم بوده اکسپیر
تایمم اینه همه چیش مشخصه بچهها خب یعنی
این درق توکن من ولید بوده مشکلی نداشته
بریم بیایم اداش جلسه بعدی صحبت کنیم
فعلاً خداحافظ