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

ورود کاربر

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

پیش‌نیازها

پیش از اجرای این مثال، مطمئن شوید که:

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

    pip install zarban
  2. به API زربان در محیط تست دسترسی دارید

مشخصات API

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

  • متد: POST
  • توضیحات: ورود با رایانامه و گذرواژه و دریافت توکن JWT.

فرمت درخواست

{
"email": "example@domain.com",
"password": "password"
}

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

فیلدنوعتوضیحاتمثال
emailstringایمیل کاربرexample@domain.com
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="user@example.com",
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="user@example.com",
password="your_secured_password"
)

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

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

درخواست ورود را می‌فرستد و توکن احراز هویت را برای درخواست‌های بعدی نگه می‌دارد.

مدیریت خطا

این مثال خطاها را بر پایه مشخصات API به‌طور کامل مدیریت می‌کند:

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

  1. 400 Bad Request

    • قالب نشانی رایانامه نامعتبر است
    • فیلدهای ضروری را نفرستاده‌اید
    • قالب گذرواژه از اعتبارسنجی رد نشده است
  2. 401 Unauthorized

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

    • چنین حساب کاربری وجود ندارد
    • حساب حذف یا غیرفعال شده است
  4. 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 = "user@example.com" # 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

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

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

بیشتر بخوانید