ورود کاربر
این مثال نحوه پیادهسازی احراز هویت کاربر با استفاده از 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"]
}
نمونه کد
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 Clientcfg = wallet.Configuration(
host="https://testwapi.zarban.io"
)
# Create an instance of the ApiClient with the configuration
api_client = wallet.ApiClient(cfg)
کلاینت API را با نقطه پایانی محیط تست ایجاد و پیکربندی میکند.
۳. راهاندازی نمونه APIauth_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 استفاده کنید
- محدودیت نرخ را پیادهسازی کنید
- تلاشهای ورود مشکوک را پایش کنید
- توکنها را به صورت امن ذخیره کنید
- مکانیزمهای تازهسازی توکن را پیادهسازی کنید
- توکنها را هنگام خروج پاک کنید
- انقضای توکن را مدیریت کنید