پرش به مطلب اصلی

ورود کاربر

این مثال نحوه پیاده‌سازی احراز هویت کاربر با استفاده از SDK زربان را نشان می‌دهد. این مثال نحوه ورود کاربر، مدیریت توکن احراز هویت و راه‌اندازی لاگ‌گیری مناسب برای فرآیند احراز هویت را نمایش می‌دهد.

پیش‌نیازها

قبل از اجرای این مثال، اطمینان حاصل کنید که:

۱. SDK زربان را نصب کرده‌اید:

pip install zarban

۲. به API زربان (محیط تست) دسترسی دارید

مشخصات API

نقطه پایانی: /auth/login

  • متد: POST
  • توضیحات: ورود با ایمیل و رمز عبور و دریافت توکن JWT.

فرمت درخواست

{
"email": "[email protected]",
"password": "password"
}

فیلدهای ضروری

فیلدنوعتوضیحاتمثال
emailstringایمیل کاربر[email protected]
passwordstringرمز عبور کاربرpassword

فرمت پاسخ

پاسخ موفق (200 OK)

{
"token": "eyJhbGciOiJIUzI1NiIsInR..."
}

پاسخ‌های خطا

  • 400 Bad Request
{
"msg": "Bad request",
"reasons": ["Invalid address"]
}
  • 401 Unauthorized
{
"msg": "Unauthorized",
"reasons": ["Invalid credentials"]
}
  • 404 Not Found
{
"msg": "Not Found",
"reasons": ["User not found"]
}
  • 500 Internal Server Error
{
"msg": "Internal Server Error",
"reasons": ["Server error occurred"]
}

نمونه کد

import zarban.wallet.openapi_client as wallet

import logging

def login_example():
# Set up logging
logger = logging.getLogger(__name__)

# Create and configure the Configuration object
cfg = wallet.Configuration(
host="https://testwapi.zarban.io" # Use the working API URL
)

# Create an instance of the ApiClient with the configuration
api_client = wallet.ApiClient(cfg)

# Create an instance of the DefaultApi using the ApiClient
auth_api = wallet.AuthApi(api_client)

# Prepare the login request data
login_request = wallet.LoginRequest(
email="[email protected]",
password="your_secured_password"
)

try:
# Call the login API
api_response = auth_api.login_with_email_and_password(login_request)
logger.info("Login successful!")
logger.info(f"Token: {api_response.token}")

# After successful login, you can set the access token for future authenticated requests
cfg.access_token = api_response.token

return api_response.token

except wallet.ApiException as e:
logger.error(f"Exception when calling auth_api->login_with_email_and_password: {e}")
logger.error(f"Status code: {e.status}")
logger.error(f"Reason: {e.reason}")
logger.error(f"Error message: {e.body}")
return None

if __name__ == "__main__":
token = login_example()
if token:
print(f"Login successful. Token: {token}")
else:
print("Login failed. Please check the logs for more information.")

توضیح گام به گام ورود کاربر

۱. راه‌اندازی لاگ‌گیری

logger = logging.getLogger(__name__)

یک نمونه logger برای پیگیری رویدادها و خطاهای احراز هویت راه‌اندازی می‌کند.

۲. پیکربندی API Client
cfg = wallet.Configuration(
host="https://testwapi.zarban.io"
)

# Create an instance of the ApiClient with the configuration
api_client = wallet.ApiClient(cfg)

کلاینت API را با نقطه پایانی محیط تست ایجاد و پیکربندی می‌کند.

۳. راه‌اندازی نمونه API
auth_api = wallet.AuthApi(api_client)

یک نمونه از DefaultApi برای انجام فراخوانی‌های API ایجاد می‌کند.

۴. آماده‌سازی درخواست ورود
login_request = wallet.LoginRequest(
email="[email protected]",
password="your_secured_password"
)

یک شیء درخواست ورود با اعتبارنامه‌های کاربر ایجاد می‌کند.

۵. مدیریت احراز هویت
api_response = auth_api.login_with_email_and_password(login_request)
cfg.access_token = api_response.token

درخواست ورود را ارسال می‌کند و توکن احراز هویت را برای درخواست‌های آینده ذخیره می‌کند.

مدیریت خطا

این مثال شامل مدیریت جامع خطا بر اساس مشخصات API است:

کدهای وضعیت خطا

۱. 400 Bad Request

  • فرمت ایمیل نامعتبر
  • فیلدهای ضروری موجود نیست
  • شکست اعتبارسنجی فرمت رمز عبور

۲. 401 Unauthorized

  • اعتبارنامه‌های نامعتبر
  • حساب قفل شده
  • تلاش‌های ناموفق بیش از حد

۳. 404 Not Found

  • حساب کاربری وجود ندارد
  • حساب حذف شده یا غیرفعال است

۴. 500 Internal Server Error

  • مشکلات اتصال به پایگاه داده
  • مشکلات پیکربندی سرور
  • خرابی‌های سرویس داخلی

مثال مدیریت خطا

try:
api_response = api_instance.auth_login_post(login_request)
except wallet.ApiException as e:
if e.status == 400:
logger.error("Bad Request: Check input parameters")
elif e.status == 401:
logger.error("Unauthorized: Invalid credentials")
elif e.status == 404:
logger.error("Not Found: User account not found")
elif e.status == 500:
logger.error("Server Error: Please try again later")

بهترین شیوه‌ها

۱. مدیریت اعتبارنامه‌ها

# DON'T store credentials in code
email = "[email protected]" # Incorrect

# DO use environment variables
import os
email = os.environ.get('ZARBAN_USER_EMAIL')

۲. ذخیره‌سازی توکن

# DO store token securely
def save_token(token):
# Use your secure storage method
pass

# DO clear token on logout
def logout():
configuration.access_token = None
# Clear stored token

۳. ملاحظات امنیتی

  • همیشه از HTTPS برای فراخوانی‌های API استفاده کنید
  • محدودیت نرخ را پیاده‌سازی کنید
  • تلاش‌های ورود مشکوک را پایش کنید
  • توکن‌ها را به صورت امن ذخیره کنید
  • مکانیزم‌های تازه‌سازی توکن را پیاده‌سازی کنید
  • توکن‌ها را هنگام خروج پاک کنید
  • انقضای توکن را مدیریت کنید

همچنین ببینید