Ninja Learn | نینجا لرن
1.23K subscribers
105 photos
41 videos
12 files
326 links
یادگیری برنامه نویسی به سبک نینجا 🥷
اینجا چیزایی یاد میگیری که فقط نینجاهای وب‌ بلدن 🤫

📄 Send me post: https://t.iss.one/NoronChat_bot?start=sec-fdggghgebe

👥 ɢʀᴏᴜᴘ: https://t.iss.one/+td1EcO_YfSphNTlk
Download Telegram
💎 احرازهویت Authentication در جنگو 💎

امروز می‌خوام در مورد یکی از مهم‌ترین مباحث دنیای وب، یعنی Authentication یا همون احراز هویت در جنگو (Django) صحبت کنم. 🛡️ اگر توسعه‌دهنده وب هستیدقطعا می‌دونید که چقدر این موضوع مهمه! پس بیاید بدون معطلی بریم سر اصل مطلب! 🚀

1⃣ احراز هویت ساده (Simple Authentication) 🆔
این ساده‌ترین نوع احراز هویت توی جنگوئه. به طور پیش‌فرض جنگو یک سیستم احراز هویت داخلی داره که کاربرا رو با استفاده از نام کاربری و رمز عبور وارد سیستم می‌کنه. این روش بیشتر برای پروژه‌های کوچیک و ساده مناسبه.

چطوری پیاده‌سازیش کنیم؟ 🤔
اول باید توی تنظیمات پروژه، app مربوط به احراز هویت جنگو (django.contrib.auth) رو فعال کنید.
بعدش می‌تونید با استفاده از فرم‌های پیش‌فرض یا ساخت فرم‌های خودتون، کاربرا رو ثبت نام و وارد سیستم کنید.


2⃣ احراز هویت با توکن (Token Authentication)
🔑
این روش مخصوص زمانی هست که شما دارید یه API می‌سازید و می‌خواید کاربرانتون با استفاده از توکن بهش دسترسی پیدا کنن. توی این روش، به جای نام کاربری و رمز عبور، یک توکن به کاربر داده می‌شه که باید اون رو توی هدر درخواست‌ها قرار بده.


چطور پیاده‌سازیش کنیم؟🤔
از کتابخونه‌های مثل Django Rest Framework استفاده کنید.
بعدش با استفاده از TokenAuthentication و صدور توکن برای هر کاربر، می‌تونید این روش رو پیاده کنید.


3⃣ احراز هویت JWT (JSON Web Token
) 📜
خب JWT یه نوع خاص از توکنه که اطلاعات کاربر رو داخل خودش ذخیره می‌کنه. این نوع توکن‌ها خیلی امن و پرکاربرد هستن و به خصوص برای پروژه‌های SPA (Single Page Application) خیلی مناسبن.


چطور پیاده‌سازیش کنیم؟🤔
از کتابخونه‌های مثل djangorestframework-simplejwt استفاده کنید.
بعدش با پیکربندی صحیح، می‌تونید توکن‌های JWT رو برای کاربران صادر و اعتبارسنجی کنید.


4⃣ احراز هویت با OAuth 2.0 🌐
این روش بیشتر برای وقتی مناسبه که می‌خواید کاربرانتون با حساب‌های شبکه‌های اجتماعی یا سرویس‌های دیگه مثل گوگل و فیسبوک وارد سایت بشن. OAuth 2.0 یه پروتکل امن برای این نوع احراز هویته.

چطور پیاده‌سازیش کنیم؟ 🤔
از کتابخونه django-allauth یا social-auth-app-django استفاده کنید.
بعدش با انجام تنظیمات مربوطه، می‌تونید کاربران رو از طریق سرویس‌های مختلف احراز هویت کنید.


5⃣ احراز هویت دو مرحله‌ای (Two-Factor Authentication) 🔐
اگه می‌خواید امنیت بیشتری برای کاربران فراهم کنید، می‌تونید احراز هویت دو مرحله‌ای رو پیاده کنید. توی این روش، علاوه بر رمز عبور، یه کد تایید هم برای کاربر ارسال می‌شه که باید اون رو وارد کنه.


چطور پیاده‌سازیش کنیم؟ 🤔
از کتابخونه django-two-factor-auth استفاده کنید.
بعد از تنظیمات اولیه، می‌تونید این قابلیت رو به اپلیکیشن خودتون اضافه کنید.



جمع‌بندی 🧩
هر کدوم از این روش‌ها کاربرد خاص خودشون رو دارن و بسته به نیاز پروژه، می‌تونید یکی یا چند تا از این‌ها رو پیاده کنید. امنیت توی دنیای وب خیلی مهمه، پس به هیچ وجه ازش غافل نشید! 🕵️‍♂️

اگه سوالی دارید یا نیاز به کمک بیشتر دارید، حتما بپرسید. 💬

پست بعدی رو هم از دست ندید که می‌خوام در مورد Authorization صحبت کنم. 😉

#authentication #auth #django #backend


@ninja_learn_ir
👍103🤯1
💎 همه چیز درمورد Authorization درجنگو 💎

خب، توی پست قبلی درباره Authentication یا همون احراز هویت صحبت کردیم.
حالا نوبت به مرحله بعدی یعنی Authorization (مجوز دسترسی) رسیده 🔓 اینجا میخوایم بررسی کنیم که بعد از این‌که کاربر احراز هویت شد، چطور می‌تونیم مشخص کنیم به چه بخش‌هایی از سایت یا اپلیکیشن دسترسی داشته باشه. 🚪

1⃣ حالا Authorization چیه؟ 🤔
به طور ساده، Authorization یعنی تعیین سطح دسترسی کاربر به منابع مختلف. مثلا فرض کنید توی یه اپلیکیشن خبری دارید؛ نویسنده‌ها اجازه دارن مقاله بنویسن، ولی فقط مدیران میتونن اونا رو منتشر کنن. 📝 اینجا Authorization تعیین می‌کنه که کی به چی دسترسی داشته باشه.

2⃣ استفاده از Permissions در جنگو 🛡️
جنگو به صورت پیش‌فرض یه سیستم Permission داره که با استفاده از اون می‌تونید برای هر مدل (Model) مشخص کنید که کدوم کاربر یا گروه به چه عملیاتی دسترسی داشته باشه.

چطور پیاده‌سازیش کنیم؟ 🤔
می‌تونید از مجوزهای پیش‌فرض جنگو استفاده کنید که شامل add ، change  delete و view هستن.
برای ایجاد مجوزهای اختصاصی هم میتونید توی مدل‌ها (Model) از Meta و permissions استفاده کنید و مجوز های جدید تعریف کنید.

3⃣ ـGroup-Based Permissions 👥
یکی از امکانات عالی جنگو، سیستم گروه‌بندی کاربراست. شما می‌تونید کاربرا رو توی گروه‌های مختلف دسته‌بندی کنید و بعد براساس هر گروه، مجوزهای مختلفی بهشون بدید. مثلا یه گروه مدیران (Admins) داشته باشید که همه مجوزها رو دارن، و یه گروه کاربران عادی (Users) که دسترسی محدودتری دارن.

چطور پیاده‌سازیش کنیم؟ 🤔
اول باید گروه‌ها رو از طریق پنل ادمین جنگو یا از طریق کد بسازید.
بعدش می‌تونید کاربرا رو به گروه‌ها اضافه کنید و مجوزهای خاص رو به گروه‌ها اختصاص بدید.

4⃣ پیاده‌سازی Authorization در API ها 🔐
اگه دارید یه API می‌سازید، می‌تونید از Django Rest Framework برای مدیریت پرمیشن استفاده کنید. DRF به شما اجازه میده از کلاس‌های Permission استفاده کنید تا کنترل کاملی روی این داشته باشید که چه کسی به چه چیزی دسترسی داره.

چطور پیاده‌سازیش کنیم؟ 🤔
می‌تونید از permissions.IsAuthenticated برای اطمینان از این‌که فقط کاربران احراز هویت شده به API دسترسی دارن، استفاده کنید.
همچنین می‌تونید مجوزهای سفارشی بسازید و ازشون استفاده کنید. مثلا permissions.IsAdminUser برای ادمین‌ها.

5⃣ ـObject-Level Permissions 🛠️
این نوع مجوزها وقتی به کار میاد که بخواید دسترسی‌ها رو بر اساس هر شیء خاص تعیین کنید. مثلا یه کاربر فقط بتونه پروفایل خودش رو ببینه و نه پروفایل بقیه کاربرا. جنگو و DRF هر دو از این نوع مجوزها پشتیبانی می‌کنن.

چطور پیاده‌سازیش کنیم؟ 🤔
برای DRF میتونید BasePermission رو کاستومایز کنید و لاجیک خودتون رو برای هر شیء پیاده کنید.
میتونید از روش‌های مختلف مثل اورراید کردن متد get_object در ویوهای DRF استفاده کنید.

6⃣ احراز هویت بر اساس Role 🏷️
یکی از روش‌های پیشرفته‌تر برای Authorization، استفاده از Role‌هاست. توی این روش، هر کاربر یه نقش یا Role داره و مجوزها بر اساس این نقش‌ها تعیین می‌شن.

چطور پیاده‌سازیش کنیم؟
می‌تونید از پکیج‌هایی مثل django-role-permissions استفاده کنید.
رول های مختلف رو تعریف کنید و به هر رول یه سری مجوز اختصاص بدید.
جمع‌بندی 🧩
فهمیدیم Authorization یکی از مهم‌ترین بخش‌های هر اپلیکیشن وبه و با استفاده از اون میتونید دسترسی کاربران رو به خوبی مدیریت کنید. امنیت همیشه باید اولویت باشه، پس حواستون باشه که مجوزها رو درست تنظیم کنید تا کسی نتونه از طریق ضعف‌های امنیتی به بخش‌های حساس دسترسی پیدا کنه. 🕵️‍♀️

امید وارم مفید بوده باشه :) ❤️

#django #backend #auth


@ninja_learn_ir
10👍3🔥2🤩1