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

ورود کاربر

این مثال نحوه پیاده‌سازی احراز هویت کاربر با استفاده از 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"]
}

نمونه کد

from zarban.wallet.openapi_client.configuration import Configuration
from zarban.wallet.openapi_client.api_client import ApiClient
from zarban.wallet.openapi_client.api.default_api import DefaultApi
from zarban.wallet.openapi_client.models import AuthLoginRequest
from zarban.wallet.openapi_client.exceptions import ApiException
import logging

def login_example():
# Set up logging
logger = logging.getLogger(__name__)
# Create and configure the Configuration object
configuration = Configuration(
host="https://testwapi.zarban.io"
)
# Create an instance of the ApiClient with the configuration
api_client = ApiClient(configuration)
# Create an instance of the DefaultApi using the ApiClient
api_instance = DefaultApi(api_client)
# Prepare the login request data
login_request = AuthLoginRequest(
email="[email protected]",
password="your_secure_password"
)
try:
# Call the login API
api_response = api_instance.auth_login_post(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
configuration.access_token = api_response.token
# If the response includes user information, log it
if hasattr(api_response, 'user'):
logger.info(f"User ID: {api_response.user.id}")
logger.info(f"User Email: {api_response.user.email}")
return api_response.token
except ApiException as e:
logger.error(f"Exception when calling DefaultApi->auth_login_post: {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

configuration = Configuration(host="https://testwapi.zarban.io")
api_client = ApiClient(configuration)

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

۳. راه‌اندازی نمونه API

api_instance = DefaultApi(api_client)

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

۴. آماده‌سازی درخواست ورود

login_request = AuthLoginRequest(
email="[email protected]",
password="your_secure_password"
)

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

۵. مدیریت احراز هویت

api_response = api_instance.auth_login_post(login_request)
configuration.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 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")

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

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

# اعتبارنامه‌ها را در کد ذخیره نکنید
email = "[email protected]" # نادرست
#از متغیرهای محیطی استفاده کنید

import os
email = os.environ.get('ZARBAN_USER_EMAIL')

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

# توکن را به صورت امن ذخیره کنید
def save_token(token):
# از روش ذخیره‌سازی امن خود استفاده کنید
pass

#توکن را هنگام خروج پاک کنید
def logout():
configuration.access_token = None
# توکن ذخیره شده را پاک کنید

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

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

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