Navid ❤️ একদম ঠিক — আমরা আবার শুরু করি।
এইবার একদম ১-২-৩ করে, গল্পের মতো বুঝাই।
🎯 বড় ছবি আগে
JWT = একটা ডিজিটাল আইডি কার্ড
তুমি login করলে server তোমাকে একটা আইডি কার্ড দেয়।
তারপর তুমি যেখানেই যাবে (API call করবে), ওই কার্ড দেখাবে।
🧍♂️ ধরি তুমি login করলে
User:
Email: navid@xyz.com
Role: Writer
Password ঠিক।
এখন server বললো:
ঠিক আছে, এই নাও তোমার ID card (JWT token)
🥇 Step 1: Claims বানানো (ID card এর তথ্য লেখা)
এই অংশ:
var claims = new List<Claim>
{
new Claim(ClaimTypes.Email, user.Email),
new Claim(ClaimTypes.NameIdentifier, user.Id)
};
foreach (var role in roles)
{
//can have a multiple role
claims.Add(new Claim(ClaimTypes.Role, role));
}
এটা কি করছে?
ID card এর ভিতরে লিখছে:
- তোমার Email
- তোমার UserId
- তোমার Role
Example ভিতরে থাকবে:
Email: navid@xyz.com
UserId: 123
Role: Writer
👉 Claims = ID card এর তথ্য
🥈 Step 2: Secret Key দিয়ে Sign করা
var key = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(configuration["Jwt:Key"]));
এটা হচ্ছে security seal।
Real life example:
তোমার ID card সরকার সিল মেরে দিলো।
যদি কেউ ID card পরিবর্তন করে:
→ Seal match করবে না
→ Invalid ধরা পড়বে
এটাই Signing।
🥉 Step 3: Expiry দেওয়া
expires: DateTime.Now.AddMinutes(15)
মানে:
এই ID card ১৫ মিনিট valid।
তারপর expire।
Security জন্য।
🏁 Step 4: Token বানানো
var token = new JwtSecurityToken(...)
return new JwtSecurityTokenHandler().WriteToken(token);
এটা string বানিয়ে client কে দিচ্ছে।
Client পাবে এমন কিছু:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
🎬 এখন পুরো flow দেখো
1️⃣ Login করলো
2️⃣ Password verify হলো
3️⃣ Token বানানো হলো
4️⃣ Client token পেল
তারপর client যখন call করবে:
GET /api/regions
Authorization: Bearer eyJhbGciOi...
Middleware কি করবে?
- Secret key দিয়ে verify করবে
- Expiry check করবে
- Claims পড়বে
- Role check করবে
🧠 এখন সহজ ভাষায়
| Code Part | Real Life Meaning |
|---|---|
| Claims | ID card এর তথ্য |
| Secret Key | সরকারী সিল |
| Expiry | মেয়াদ |
| JWT String | ID card |