معماری اکوسیستم
معماری فنی سابدامینها و مسیریابی
بررسی فنی SubdomainMiddleware، روتینگ کانونیکال و هماهنگی کوکیها در Django.
۱. مسیریابی در سطح میدلور (SubdomainMiddleware)
در کراپلود، تفکیک سابدامینها توسط SubdomainMiddleware در سطح درخواستهای HTTP مدیریت میشود. این میدلور هاست ورودی را بررسی کرده و بر اساس دامنه، request.urlconf مناسب را بارگذاری میکند:
# backend/apps/core/middleware.py
class SubdomainMiddleware(MiddlewareMixin):
def process_request(self, request):
host = request.get_host().split(":")[0].lower()
if host == settings.AUTH_DOMAIN:
if request.path == "/":
return redirect(f"https://{settings.AUTH_DOMAIN}/accounts/login/")
return None
elif host == "plus.croplod.com":
request.urlconf = "apps.plus.urls"
return None
elif host == settings.WALLET_DOMAIN:
request.urlconf = "config.wallet_urls"
return None
۲. قوانین کوکی و امنیت بیندامنهای
کوکیهای احراز هویت و CSRF به شکل گسترده روی سطح ریشه تنظیم میشوند:
SESSION_COOKIE_DOMAIN = '.croplod.com'
CSRF_COOKIE_DOMAIN = '.croplod.com'
SESSION_COOKIE_SECURE = True
SESSION_COOKIE_HTTPONLY = True
CSRF_COOKIE_SAMESITE = 'Lax'