Cookies হল ছোট টেক্সট ফাইল যা ব্রাউজার বা ক্লায়েন্টে স্টোর হয় এবং ওয়েব সার্ভারের সাথে তথ্য শেয়ার করার জন্য ব্যবহৃত হয়। কুকি ব্যবহার করে আপনি ইউজারের সেশন স্টোরেজ, অথেনটিকেশন ডেটা, অথবা ইউজারের প্রেফারেন্সসহ অন্যান্য তথ্য সংরক্ষণ করতে পারেন।
KoaJS-এ cookies তৈরি এবং অ্যাক্সেস করার জন্য koa-cookie মিডলওয়্যার অথবা ctx.cookies অবজেক্ট ব্যবহার করা হয়। এই টিউটোরিয়ালে, আমরা দেখব কিভাবে KoaJS-এ কুকি তৈরি করা যায় এবং কিভাবে এগুলো অ্যাক্সেস করা যায়।
১. Cookies তৈরি এবং সেট করা
KoaJS-এ কুকি তৈরি করতে ctx.cookies.set() মেথড ব্যবহার করা হয়। এটি একটি কুকি তৈরি করে এবং সেট করে।
১.১. কুকি সেট করার উদাহরণ
const Koa = require('koa');
const Router = require('koa-router');
const app = new Koa();
const router = new Router();
router.get('/set-cookie', async (ctx) => {
// কুকি সেট করা
ctx.cookies.set('username', 'JohnDoe', {
httpOnly: true, // কুকিটি শুধুমাত্র HTTP রিকোয়েস্টের মাধ্যমে অ্যাক্সেসযোগ্য
secure: false, // এটি false হলে কেবল HTTP প্রোটোকলে কাজ করবে, HTTPS প্রোটোকলে true হতে হবে
maxAge: 1000 * 60 * 60 * 24, // কুকির মেয়াদ ২৪ ঘণ্টা
signed: true, // কুকিটি সাইন করা হবে
});
ctx.body = 'Cookie has been set!';
});
app.use(router.routes()).use(router.allowedMethods());
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
ব্যাখ্যা:
ctx.cookies.set('username', 'JohnDoe'): এই কোডটিusernameনামের একটি কুকি তৈরি করে, যার মান'JohnDoe'।httpOnly: true: কুকিটি শুধুমাত্র HTTP রিকোয়েস্টের মাধ্যমে অ্যাক্সেসযোগ্য হবে, JavaScript মাধ্যমে অ্যাক্সেস করা যাবে না। এটি সিকিউরিটি ফিচার হিসেবে ব্যবহার করা হয়।secure: false: কুকি শুধুমাত্র HTTPS প্রোটোকলে পাঠানো হবে (এই ক্ষেত্রে আমরা HTTP ব্যবহার করছি, তাইfalseব্যবহার করেছি)।maxAge: কুকির মেয়াদ নির্ধারণ করা হয়েছে ২৪ ঘণ্টা।signed: true: কুকিটি সাইন করা হবে, যাতে কুকির মান পরিবর্তন করা না যায়।
২. Cookies অ্যাক্সেস করা
একটি কুকি অ্যাক্সেস করার জন্য ctx.cookies.get() মেথড ব্যবহার করা হয়। এটি কুকির মান ফিরিয়ে দেয়।
২.১. কুকি অ্যাক্সেস করার উদাহরণ
router.get('/get-cookie', async (ctx) => {
const username = ctx.cookies.get('username'); // 'username' কুকি অ্যাক্সেস করা
if (username) {
ctx.body = `Hello, ${username}!`; // যদি কুকি পাওয়া যায়
} else {
ctx.body = 'No cookie found!';
}
});
এখানে, ctx.cookies.get('username') এর মাধ্যমে username কুকিটি অ্যাক্সেস করা হয়েছে। যদি কুকি পাওয়া যায়, তবে সেটির মান দেখানো হবে, অন্যথায় 'No cookie found!' বার্তা দেখানো হবে।
৩. Signed Cookies ব্যবহার করা
Signed Cookies নিরাপদ কুকি, যেগুলি সার্ভার সাইডে সাইন করা হয়। এটি কুকির মানে কোনো পরিবর্তন হলে তা সনাক্ত করতে সাহায্য করে। signed: true সেট করার মাধ্যমে আপনি কুকির মান সাইন করতে পারেন।
৩.১. Signed Cookies উদাহরণ
const Koa = require('koa');
const Router = require('koa-router');
const app = new Koa();
const router = new Router();
// সাইনিং কুকি সিস্টেম চালু করা
app.keys = ['your-secret-key'];
router.get('/set-signed-cookie', async (ctx) => {
// সাইন করা কুকি সেট করা
ctx.cookies.set('username', 'JohnDoe', {
signed: true, // সাইন করা কুকি
maxAge: 1000 * 60 * 60 * 24,
});
ctx.body = 'Signed cookie has been set!';
});
router.get('/get-signed-cookie', async (ctx) => {
const username = ctx.cookies.get('username', { signed: true }); // সাইন করা কুকি অ্যাক্সেস করা
if (username) {
ctx.body = `Hello, ${username}!`; // সাইন করা কুকি পাওয়া গেলে
} else {
ctx.body = 'No signed cookie found!';
}
});
app.use(router.routes()).use(router.allowedMethods());
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
এখানে:
app.keys = ['your-secret-key']: KoaJS-এ সাইন করা কুকির জন্য একটি সিক্রেট কী নির্ধারণ করতে হয়। এটি কুকির সাইনিং সিস্টেমের অংশ।ctx.cookies.get('username', { signed: true }): সাইন করা কুকি অ্যাক্সেস করা হচ্ছে।
৪. Cookies মুছে ফেলা
কুকি মুছে ফেলতে ctx.cookies.set() মেথডের মাধ্যমে কুকির maxAge বা expires প্যারামিটার 0 সেট করতে হয়।
৪.১. কুকি মুছে ফেলার উদাহরণ
router.get('/delete-cookie', async (ctx) => {
ctx.cookies.set('username', null); // কুকি মুছে ফেলা
ctx.body = 'Cookie has been deleted!';
});
এখানে, ctx.cookies.set('username', null) দিয়ে কুকি মুছে ফেলা হয়েছে। কুকি মুছে ফেলার জন্য কুকির মান null করা হয়।
৫. Security Considerations (নিরাপত্তা সতর্কতা)
- HttpOnly: কুকি যদি
httpOnlyহয়, তবে এটি শুধুমাত্র HTTP রিকোয়েস্টের মাধ্যমে অ্যাক্সেসযোগ্য হবে, এবং JavaScript এর মাধ্যমে অ্যাক্সেস করা যাবে না। এটি XSS আক্রমণ থেকে রক্ষা করতে সাহায্য করে। - Secure: কুকি যদি
secureহয়, তবে কেবলমাত্র HTTPS প্রোটোকলের মাধ্যমে তা ট্রান্সমিট করা হবে। এটি MITM (Man-In-The-Middle) আক্রমণ থেকে সুরক্ষা প্রদান করে। - Signed Cookies: সাইন করা কুকি ব্যবহার করে, আপনি নিশ্চিত করতে পারবেন যে কুকির মানে কোনো পরিবর্তন করা হয়নি। এটি সিকিউরিটি ফিচার হিসেবে গুরুত্বপূর্ণ।
সারাংশ
KoaJS-এ কুকি তৈরি এবং অ্যাক্সেস করা সহজ। ctx.cookies.set() ব্যবহার করে কুকি সেট করা হয় এবং ctx.cookies.get() ব্যবহার করে কুকি অ্যাক্সেস করা যায়। আপনি কুকির মেয়াদ, সিকিউরিটি, এবং সাইনিং কনফিগার করে আপনার অ্যাপ্লিকেশনকে আরও নিরাপদ করতে পারেন। HttpOnly, Secure, এবং Signed Cookies ব্যবহারের মাধ্যমে কুকির নিরাপত্তা নিশ্চিত করা সম্ভব। KoaJS-এ কুকি ব্যবস্থাপনা অত্যন্ত নমনীয় এবং শক্তিশালী।
Read more