Djoser ব্যবহার করে User Registration, Login এবং Token-Based Authentication কিভাবে কাজ করে তা নিয়ে বিস্তারিত আলোচনা করা হলো।
১. User Registration API: নতুন ইউজার রেজিস্ট্রেশন করা
Djoser ডিফল্টভাবে একটি user registration endpoint সরবরাহ করে যা POST রিকোয়েস্ট ব্যবহার করে নতুন user তৈরি করতে ব্যবহৃত হয়।
Endpoint:
POST /auth/users/
ডেটা ফরম্যাট (JSON):
{
"username": "newuser",
"password": "securepassword",
"email": "newuser@example.com"
}
Response (সফল হলে):
{
"email": "newuser@example.com",
"username": "newuser",
"id": 1
}
নোট: ডিফল্টভাবে Djoser user registration এর জন্য ইমেইল ভেরিফিকেশন এবং অন্যান্য configuration options কাস্টমাইজ করার সুযোগ দেয়। আপনি settings.py ফাইলে DJOSER কনফিগারেশন ব্যবহার করে এটি কাস্টমাইজ করতে পারেন।
২. Login API: ইমেইল এবং পাসওয়ার্ডের মাধ্যমে লগইন করা
Token-based login এর জন্য Djoser token/login/ endpoint সরবরাহ করে যা user-এর credentials যাচাই করে একটি authentication token প্রদান করে।
Endpoint:
POST /auth/token/login/
ডেটা ফরম্যাট (JSON):
{
"username": "newuser",
"password": "securepassword"
}
Response (সফল হলে):
{
"auth_token": "your_generated_token_here"
}
এই token ব্যবহার করে user পরবর্তী API রিকোয়েস্টগুলিতে authentication করতে পারে।
৩. Token-Based Authentication: Djoser ব্যবহার করে টোকেন ভিত্তিক অথেন্টিকেশন
Djoser এবং Django REST Framework এর সাহায্যে token-based authentication সহজে configure করা যায়। rest_framework.authtoken অ্যাপ্লিকেশন ব্যবহার করতে আপনাকে INSTALLED_APPS এ এটি যুক্ত করতে হবে এবং settings.py ফাইলে DRF এর authentication classes এর মধ্যে TokenAuthentication অন্তর্ভুক্ত করতে হবে।
Token Authentication যুক্তকরণ:
INSTALLED_APPS += [
'rest_framework.authtoken',
]
Settings.py এর Authentication Class:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
],
}
এখন user token ব্যবহার করে যেকোনো secure endpoint এ access করতে পারে। token কে Authorization header এর মাধ্যমে রিকোয়েস্টে যোগ করা হয়।
Example API Request:
GET /some/secure/endpoint/
Authorization: Token your_generated_token_here