از Pista Academy حمایت کنید
برای مشاهده سایر جلسات و ادامه یادگیری، وارد صفحه دوره شوید.
خلاصه آموزشی
مرور سریع مفاهیم اصلی پیش از تماشای کامل یا برای جمعبندی بعد از آموزش.
در جلسه 20 دوره 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 واقعی بساز در انتها آمادهای کدت را روی سرور/ابر بالا بیاوری اگر این دوره برات مفید بود، لطفاً لایک، سابسکرایب و کامنت یادت نره تا فصلهای جدیدتر و پروژههای بیشتر بسازیم 🙌
که همه مثلاً تسکها رو ببینه دیلیت بکنه
آپدیت بکنه دسترسی به همه چی داره.
میخوایم یه همچین چیزی درست کنیم. اما
چهجوری باید اینو پیادهسازی بکنیم؟ اگه
یادتون باشه ما توی مدلی که ساخته بودیم
یه چیزی داشتیم به نام رول برگردیم اینجا
یه رول داشتیم میخوایم با این رول این
جلسه بازی کنیم خب بریم صفر تا ۱۰۰ پیاده
سازی بکنیم این کارو اولین قسمتی که باید
بریم سراغش باید بریم سراغ آت یه تغییراتی
اینجا بدیم جاهای مختلف
اول میام کجا میام توی کریت اکسس توکن کن
میگم اینجا علاوه بر یوزرنیم و یوزر آیدی
رول رو هم باید چیز بکنید اضافه کنی رول د
نقطه استیآر
پس رول باید اضافه بکنیم خب حالا که من رولو اضافه کردم
باید رول رو هم اینکود بکنم اصطلاحاً میام
اینجا میگم که
رول دو نقطه
رول رول رو هم اینکود بکن
تو استپ بعدی باید چیکار بکنم زمانی که
دارم توکن جنریت میکنم باید رول رو هم
اضافه کنم
میام پایین
اینجا که توکنو جنریت میکنم گوش
توکن اینجا
اینجا میگم که
یوزر.
رول رو هم بفرست بره همراه توکن.
خب
حالا اس بعدی چیه؟
زمانی که گت کارنت یوزر میکنه اونجاهم
باید درق چیکار بکنم؟ اینجا گت کارنت
یوزرم کو اینها اینجا باید رول رو هم
اضافه کنم میگم یوزر
رول
د نقطه استیآر مساویه تو پیودم رولو
گذاشتم گت
رول
خب سمت آتنتیکیشن تقریباً دیگه تمومه البته یه چیزی جا موند اینجا اینجا اینجا
اینجا
رول دو نقطه یوزر رو اینم باید دیتیل بکنم
حالا فقط کافیه که بیام از این استفاده
بکنم بذارید نگاه بکنم یوزر رول
خب حالا بریم جلوتر یه دونه
روت جدید درست میکنم به نام ادمین. داخل
روتر یه دونه جدید درست میکنم به نام
ادمین.پ
پی
کل اینو کپی میکنم میارم تو ادمینم استفاده کنم
بعد یه کار دیگه هم باید بکنم
اینو کپی میکنم
میام تو ادمین به این روتر اضافه میکنم
اینجا فقط میشه ادمین
یه پریفیکس ادمین به تمام روتا اینجا
اضافه میکنه
خب
خب حالا بریم دسترسی رو بنویسیم ا در
حقیقت ایپیآیها رو بنویسیم اولین ایپیآی
که باید بنویسیم اینه که بره تمام تووها
رو بخونه به شرطی که یوزر ادمین باشه این
اجازه رو داره ها اگه ادمین نباشه اجازه
نداره تمامشو بخونه فقط میتونه مال خودش
رو بخونه
بیایم اینجا
من همینو کپی میکنم
یه تغییراتی باید بهش بدیم
اول اینکه اسلش تو دو میشه اسلش ادمین اسلش توو تهش میشه این
بعد
این که همینه خب اگر یوزر نبود یا د تا
شرط داریم یا
یوزر
گت یوزر رول
اگر رولش
مخالف ملف ادمین بود هر چیزی غیر ادمین
بود میگه که تو اجازه نداری این کارو بکنی
در غیر این صورت میتونه تمامشو بخونه این
تیکرم برمیدارم دیگه همه رو میتونه
بخونه خب
است بعدی چیه بیایم توی
مین
اینو اضافه کنیم ادمینم اضافه کنیم
ایمپورتشم بکنیم. تمام. میتونیم بریم الان چک کنیم که
ببینیم کار میکنه یا نه.
یه قسمت ادمینم باید اضافه شده باشه الان اینش.
خب اول بریم یه دونه یوزر بسازیم که یه
یوزر دیگه داشته باشیم با دسترسی غیر
ادمین باهاش یه توو بسازیم و بعد بیایم چک
کنیم میام اینجا کریت یوزر
میگم که یه دونه یوزر میخوام بسازم
یوزرنمشو مثلاً میذارم سارا ایمیلشو
میذارم سارا
gmail.com
فرستیم میذارم سارا مثلا بذار سارا ۷۷
مثلاً یوزرش لست نمیشو میذارم احمدی
بعد پسوردشم میذارم سارا ۱ ۲ ۳ ۴
رولشو خالی میذارم
خب این یوزره ساخته شد حالا میایم اینجا اینو باز ببندیم میام توی ساختن یه دونه
تو دو کریت تو دو اینجا یه اول باید لاگین
بکنم طبیعتاً با یوسر سالاگین میکنم این
دفعه
آ سال ۷۷۷ بود اوکی اینم سیوش کنیم داشته باشیم
بیایم اینجا یه دونه اضافه بکنیم
تا حالا میشه مثلاً
سارا گو
تو داکتر مثلاً
ویزیت مثلاً برین این داکتر مثلاً حالا مهم نیست چی میشه راتینم
که اینم میشه فالسکوت
اوکی تسک درست شد الان من اینجا بخوام تسکا رو ببینم فقط مال سارا رو میبینم
چون با سارا لاگینم
فقط سارا رو میبینم اون یکی تسکی که از قبل درست کرد من با ادمینو نمیتونم ببینه
حالا ولی من بیام توی
ادمین این اینجا من لاگین بکنم
لاگ اوت میکنم از یوزر سارا چون با این
نمیتونم اینجا نگاه کنید الان من بیام
اینجا اینو بزنم
میگه شما دسترسی ندارید چون ادمین نیستین
از این لاگات میکنم بعد با اون یکی لاگین
میکنم
حالا اینو اجرا کنم کلشو میبینم چه مال
خودمو چه مال خودم رو که اضافه کردم چه
مال سارا رو
خب این از این حالا بیایم دسته دیلیتم
درست بکنیم یم که ادمین اجازه رو داشته
باشه که تسکای همه رو پاک بکنه فارغ از
اینکه تسک خودش هست یا نیستش کاری نداره
فقط کافیه شما توی اون در حقیقت دیلیتی که
قبلاً نوشته بودید بیاید چیکار بکنید
بیاید یوزر رو هم اضافه کنید میایم اینجا
توی توو دیلیتش کو
میگم که این باشه
استی بودشم اوکیه
خب بعد اینجا فقط باید اینم اوکی اینم هیچ تغییری نداره یوزر
نبود و یه چیز دیگه د تا شرط داریم ما
دیگه
این شرطم
اگر یوزر نبود یا ادمین نبود پیغام خطا رو
بهش بده با ۴۰۱
در غیر این صورت بیا
یه این فیلتر باید بردارم چون دیگه میخوام
همه رو بتونه ببینه نه فقط مال خودشو
اگه بود که ریز بکنه بعدشم که
دیلیت کنه ایناش دیگه اوکیه
یه فاصله اینجا بدم. خب بریم یه چک.
من الان میخوام برم آیدی د رو پاک کنم که
مال ساراه. من میخوام با از ادمین این
کارو بکنم. میام توی دیلیت
یه لاگین باید بکنم فقط.
دو رو برو پاک کن. حالا بریم ببینیم چه کمه پاک کرد.
بله پاکش کردم فقط مال خودم مونده بود مال
ساؤلا رو تونستم پاک بکنم اینم از یه
دسترسی ادمین که ما درست کردیم
خب حالا در ادامه میخوام یه چیزی هم درست
بکنم میخوام یه دونه روتم برای یوزر درست
بکنم که یوزر بتونه هم اطلاعات خودش رو
ببینه هم بتونه پسوردشو عوض بکنه
خب میام اینجا
توی روتم یه دونه روت جدید درست میکنم
برای یوزر
اینجا توی ادمین هرچی داشتیمو کپی میکنم از اینجا باد کپی کنید
فقط این میشه یوزر اینم میشه یوزر
توی یه چیز دیگه نه اوکی اینا خب حالا
بریم جلو
چون با پسورد قراره کار بکنیم یه چیزی هم ایمپورت کنم فرام
پسلیپ
کتکست
ایمپورت بکن
کریپتو کانتکست اینو چون لازم داریم
میخوایم با پسورد کار بکنیم پس بنابراین
بهش لازم داریم
بعد توی آت یه چیز دیگه داشتیم اینم بذارید بیارم بیک کریپتم بیارم ویک
کانتکست
اینم اینجا باشه که با اینام کار داریم چون قراره پسوردو عوض بکنم پسوردم ه۸ کده
بره ذخیره بشه دیگه به صورت عادی که نباید
بره ذخیره بشه اول برم اطلاعات یوزر درست
کنم که بتونه اطلاعات یوزر رو ببینه و
بخونه یه انپت برام اون درست کنم
روتردا گت
اسلش
خودش یوزررو بهش اضافه میکنه پریفیکسو
استاتوس کده
استاتوس
اتیپی ۲۰۰ اوکی اینو میذارم خب
دفت گت یوزر یوزر دو نقطه یوزر دپندنسی و دیپی د نقطه
دی پی دپندنسی
اگر
یوزر از نون بود یعنی لاگین نکرده بود همه
ریز کن
ایتی پی اکسپشن استاتوس کد ۴۰۱ و دیتیل
آتنتیکیشن فلم
درگیر این صورت ریترن بکن برو توی دیبیدا کوری ولی برو توی یوزرز این دفعه خب مودل
یوزرز برو اینجا
مدلزه ببخشید جا افتاده خب برو اینجا
فیلتر کن
modل.آid آیدی برابر باشه با اون یوزری که لاگین
کرده گت کن قسمت آیدیشو
و اولینم بیا دیگه چون یه دونه که یوزر
قطعاً بیشتر نیست فرست
بریم اینو چک کنیم
یه دونه یوزرم باید اینجا اضافه شده باشه
خب اینم اضافه شد الان مثلاً من یوزر سارا بذار لاگین کنم
و برم بگم که اطلاعات تو ویزاررو به برگردون اطلاعات تو ویزار سارا رو بهم
کامل برگردوند
حالا بریم یه دون درست کنیم برای عوض کردن
پسورد
که کاربر من یه اند پونت داشته باشم که
بتونه پسوردشو عوض بکنه میام اینجا
توزرز قبلش باید یه کاری بکنم
قبلش ش
یه دونه چیز درست میکنم وریفیکیشن کلس
یوزر
وریفیکیشن
بیس مدل میگم که پسوردی که میفرستی
استرینگ باشه
و دوبارم باید پسوردو بزن نیو پسورد
نقطه استیآر فیلد
حداقل طولشم باشه ۶ تا کمتر از ۶ تا پسورد
قبول نمیکنه خب حالا بریم برای عوض کردم
پسورد یه پونت بنویسیم
نکته خاصی نداره نوشتنش فقط اینکه نه ولش کن مهم نیست خب خب
ادر
ادنس پوته چون قراره پسورد عوض بکنه اسلش پسورد که خودش یه یوزر قبل یوزر قبلش
اضافه میکنه مثل همیشه یه استاتوس کد
برگردونه استوس دا اتیپی
۲ست و چ۹ نو کانتنت
اسین دف
چنج
پسورد
یوزر د نقطه یوزر دپندنسی دی بی د نقطه
دیپی دپندنسی
یوزر وریفیکیشنم
یوزر وریفیکیشن وریفیکیشن
ی وریفیکیشن اینم اضافه میکنید که یه وریفیکیشنی انجام بده
حالا میام اینجا میگم اگر
یوزر نبود
در اون صورت ریز بکن یه خطایی ریز بکن بذار اینم ببینم
نخوام بنویسمش خب بعد
یوزر
در مساویست با دیدا
برو توی مدرزرز
آیدی و طبیعتاً فرست اولیو بیار
ایف
نات اگر اون پسوردی که وارد کرده بود
وریفای نشد
اگر وریفای برای اینکه میخوام بم پسوردی که داره یکسانه پسوردی که تو دیتابیس منه
یوزر
وفیکشن پسورد ببخشید پسوردش باید وریفای
بشه حتما باید استرینگ باشه ۶ کاراکترم
بیشتر باشه
یوزر
مدل ۸ پسورد
اینجا یه دونه دوباره ارور بده ۴۰۱ اینجا پس من پسوردو چک میکنم اگه پسوردی
که داخل دیتابیسم یکی نباشه میگم
ارور آ پسورد
چنج
بعد میام اینجا میگم که اگه همه چی اوکی بود یوز یوزر مدل
۸ پسورد برابر باشه با
کت خب بریم چک کنیم ببینیم کار میکنه یا نه.
خب بیایم اینجا پسوردو میخوام چک کنم. پسوردم چی بود؟ سارا ی سه چود. خب میخوام
عوضش بکنم یک د پنجش کنم. مثلاً
یا سارای خالی بذارم مثلاً پسوردو
چی شده؟ آها گفت ۶ تا کمتر نباید باشه راستی د تا سارا
درست شد؟
فکر کنم این پسورد قبلی منظورشه بچهها ۱ ۲ ۳ ۴ آره دیگه من اینجا گفته بودم پسوردو
باید یه چک بکنه پسورد قبلی برابر باشه خب
وریفای بکنم پس باید پسورد قبلی رو اول
بدم بعد پسورد جدید الان درست شد حالا یه
لاگینم بکنیم ببینیم قبول میکنه منو
لاگات میکنم
سارا سارا
درست
اینم از یوزر و ادمین د تاشو براتون درست
کردیم
این قسمتم مبحثش تمام شد جلسه بعدی میریم
سراغ مبحث جدید فعلاً خداحافظ