احراز هویت
روشهای احراز هویت
API از Bearer Token برای احراز هویت استفاده میکند. دو روش برای دریافت و استفاده از توکن وجود دارد:
۱. توکن نشست (Session Token)
از طریق endpoint ورود به سیستم یک توکن دریافت میکنید:
curl -X POST "https://example.com/api/auth/login" \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com", "password": "your-password"}'
پاسخ:
{
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
"user": { "id": 1, "email": "user@example.com" }
}
۲. کلید API (API Key)
کلیدهای API دائمی هستند و در پنل مدیریت قابل ایجاد میباشند.
نحوه ارسال توکن
توکن باید در هدر Authorization به صورت زیر ارسال شود:
Authorization: Bearer {your-token}
همچنین میتوانید از هدر X-Auth-Token استفاده کنید:
X-Auth-Token: {your-token}
endpointهای عمومی (نیاز به توکن ندارند)
| Method | Path | توضیح |
|---|---|---|
| POST | /api/auth/login |
ورود با ایمیل/رمز یا تلفن/رمز یکبار مصرف |
| POST | /api/auth/send-otp |
ارسال رمز یکبار مصرف به تلفن |
| POST | /api/auth/request-reset-password |
درخواست بازیابی رمز عبور |
| POST | /api/auth/change-password |
تغییر رمز عبور با کد بازیابی |
| GET | /api/time |
زمان سرور |
| GET | /api/docs |
مشخصات OpenAPI |
ورود با تلفن
برای ورود با شماره تلفن:
# مرحله ۱: ارسال OTP
curl -X POST "https://example.com/api/auth/send-otp" \
-H "Content-Type: application/json" \
-d '{"phone": "09123456789"}'
# مرحله ۲: ورود با OTP
curl -X POST "https://example.com/api/auth/login" \
-H "Content-Type: application/json" \
-d '{"phone": "09123456789", "otp": "123456"}'
خروج از سیستم
curl -X POST "https://example.com/api/auth/logout" \
-H "Authorization: Bearer {token}"
تغییر شماره تلفن
برای تغییر شماره تلفن کاربر احراز هویت شده:
# مرحله ۱: ارسال OTP به شماره جدید
curl -X POST "https://example.com/api/auth/phone/change/send-otp" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"phone": "09123456789"}'
# مرحله ۲: تأیید OTP
curl -X POST "https://example.com/api/auth/phone/change/verify-otp" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"phone": "09123456789", "otp": "123456"}'
محدودیت نرخ (Rate Limiting)
| endpoint | محدودیت |
|---|---|
| ورود | 50 درخواست در دقیقه |
| ارسال OTP | 30 درخواست در دقیقه |
| بازیابی رمز | 30 درخواست در ۶۰ دقیقه |
| سایر endpointها | 1200 درخواست در دقیقه |