احراز هویت
تمام وب سرویسهایی که نیاز به احراز هویت دارند، با مکانیزم JWT کار میکنند. در این مستند به نحوۀ گرفتن این توکن و استفاده از آن میپردازیم.
دریافت توکن
کافی است با داشتن username
و password
وب سرویس زیر را فراخوانی کنید.
POST/v1.1/account/jwt/create/
Request Body
{
"username": "username",
"password": "password"
}
Response Body
{
"refresh": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTczMjk3NzExMSwiaWF0IjoxNzMwMzg1MTExLCJqdGkiOiI5N2Y4YTM3MzI2MDA0YWMyYWM5ZTJhZjRkNTJiNmZkMyIsInVzZXJfaWQiOjE1fQ.6otx_uNIGNwL5Ol7LYSJRwkw3zRLslWZlLPhN7PFJp4",
"access": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzMyOTc3MTExLCJpYXQiOjE3MzAzODUxMTEsImp0aSI6ImU4YTI4YTU1NGUwODQ2MzA4MjUzYTAyYmNjNGM0NGVjIiwidXNlcl9pZCI6MTV9.W8brpT9jADlwIt1ZXR2zke4DFu6KQ0pJvMU96B4kHAg",
"pk": 15,
"uuid": "14f8a3fc-287f-4b80-9148-5743c3803214",
"expire_duration": 2592000,
"expires_at": "2024-11-30 18:01:51"
}
Response Codes
Status Code | Description |
---|---|
200 | return access and refresh tokens |
401 | Invalid username or password |
استفاده از توکن
مقدار فیلد access
را به صورت زیر در هدر ریکوئستها قرار دهید:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzMyOTc3MTExLCJpYXQiOjE3MzAzODUxMTEsImp0aSI6ImU4YTI4YTU1NGUwODQ2MzA4MjUzYTAyYmNjNGM0NGVjIiwidXNlcl9pZCI6MTV9.W8brpT9jADlwIt1ZXR2zke4DFu6KQ0pJvMU96B4kHAg
تمدید توکن
مدت زمان معتبر بودن توکن در ریسپانس در فیلد expire_duration
و زمان منقضی شدن آن در فیلد expires_at
آمده است. پس از انقضای توکن، میتوانید از refresh token موجود در ریسپانس، برای دریافت توکن جدید استفاده کنید.
برای این منظور لازم است وب سرویس زیر را فراخوانی کنید:
POST/v1.1/account/jwt/refresh/
Request Body
{
"refresh": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTczMjk3NzExMSwiaWF0IjoxNzMwMzg1MTExLCJqdGkiOiI5N2Y4YTM3MzI2MDA0YWMyYWM5ZTJhZjRkNTJiNmZkMyIsInVzZXJfaWQiOjE1fQ.6otx_uNIGNwL5Ol7LYSJRwkw3zRLslWZlLPhN7PFJp4"
}
Response Body
{
"access": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzQzNDE0MzA3LCJpYXQiOjE3NDM0MTQyMjAsImp0aSI6IjdmMTczNzNlNjJmZDRkNmFiNWI1ODM5YjRhZGZlYWI4IiwidXNlcl9pZCI6MTV9.0JFgkobMTjkNhSBYKvTQyFGGU3GXkca7Yzajdz9eH2g",
"refresh": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTc0NjAwNjI0NywiaWF0IjoxNzQzNDE0MjQ3LCJqdGkiOiJiYzNhNWU3MmVhZDI0ZmZkOWQ5OWExYjJjMGYzZWE2NCIsInVzZXJfaWQiOjE1fQ.gQJfQUMCreQXU1aq_uYqler10mE0HAMXnnsdLMyD4mQ"
}
Response Codes
Status Code | Description |
---|---|
200 | return new access and refresh tokens |
401 | Invalid refresh token |
نکات مهم
اطلاع
-
هر
refresh token
تنها یکبار معتبر است. -
در صورت دریافت توکن جدید، توکن قبلی نامعتبر خواهد شد.