ورود کاربر
این مثال نحوه پیادهسازی احراز هویت کاربر با استفاده از SDK زربان را نشان میدهد. این مثال نحوه ورود کاربر، مدیریت توکن احراز هویت و راهاندازی لاگگیری مناسب برای فرآیند احراز هویت را نمایش میدهد.
پیشنیازها
قبل از اجرای این مثال، اطمینان حاصل کنید که:
۱. SDK زربان را نصب کردهاید:
pip install zarban
۲. به API زربان (محیط تست) دسترسی دارید
مشخصات API
نقطه پایانی: /auth/login
- متد: POST
- توضیحات: ورود با ایمیل و رمز عبور و دریافت توکن JWT.
فرمت درخواست
{
"email": "[email protected]",
"password": "password"
}
فیلدهای ضروری
فیلد | نوع | توضیحات | مثال |
---|---|---|---|
string | ایمیل کاربر | [email protected] | |
password | string | رمز عبور کاربر | 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 استفاده کنید
- محدودیت نرخ را پیادهسازی کنید
- تلاشهای ورود مشکوک را پایش کنید
- توکنها را به صورت امن ذخیره کنید
- مکانیزمهای تازهسازی توکن را پیادهسازی کنید
- توکنها را هنگام خروج پاک کنید
- انقضای توکن را مدیریت کنید