KoaJS একটি শক্তিশালী এবং কাস্টমাইজযোগ্য ওয়েব ফ্রেমওয়ার্ক যা session management পরিচালনা করতে koa-session মিডলওয়্যার ব্যবহার করতে সক্ষম। koa-session ক্লায়েন্টের ব্রাউজারে সেশন ডেটা সংরক্ষণ করে এবং সার্ভারে সেগুলোর সাথে কাজ করার সুযোগ দেয়। এই মিডলওয়্যারটি মূলত কুকি ব্যবহার করে সেশন তথ্য সংরক্ষণ করে।
এই টিউটোরিয়ালে, আমরা দেখব কিভাবে KoaJS-এ koa-session ব্যবহার করে সেশন ম্যানেজমেন্ট করা যায়।
১. koa-session ইনস্টল করা
প্রথমে, আপনাকে koa-session প্যাকেজটি ইনস্টল করতে হবে:
npm install koa-session
২. koa-session কনফিগারেশন এবং ব্যবহার
এখন, koa-session প্যাকেজটি KoaJS অ্যাপ্লিকেশনে যুক্ত করা হবে। আমরা একটি কাস্টম সেশন তৈরি করব এবং তার মধ্যে ডেটা সংরক্ষণ ও রিট্রিভ করার উদাহরণ দেখাব।
const Koa = require('koa');
const Router = require('koa-router');
const session = require('koa-session');
const app = new Koa();
const router = new Router();
// koa-session কনফিগারেশন
app.keys = ['some secret key']; // সেশন এনক্রিপশনের জন্য একটি সিক্রেট কী সেট করা
app.use(session(app)); // koa-session মিডলওয়্যার ব্যবহার করা
// সেশন হ্যান্ডলিং
router.get('/set', (ctx) => {
// সেশনে ডেটা সংরক্ষণ করা
ctx.session.views = (ctx.session.views || 0) + 1;
ctx.body = `Views: ${ctx.session.views}`;
});
router.get('/get', (ctx) => {
// সেশন থেকে ডেটা রিট্রিভ করা
ctx.body = `Views: ${ctx.session.views || 0}`;
});
router.get('/destroy', (ctx) => {
// সেশন ধ্বংস করা
ctx.session = null;
ctx.body = 'Session destroyed!';
});
// রাউট মাউন্ট করা
app
.use(router.routes())
.use(router.allowedMethods());
// অ্যাপ চালু করা
app.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});
কোডের ব্যাখ্যা:
app.keys:koa-sessionমিডলওয়্যার ব্যবহারের জন্য একটি সিক্রেট কী সেট করা হয়েছে, যা সেশন কুকি এনক্রিপশনের জন্য ব্যবহৃত হবে।app.use(session(app)): এখানেkoa-sessionমিডলওয়্যার ব্যবহার করা হয়েছে।ctx.session: এই অবজেক্টে সেশন ডেটা সংরক্ষণ ও রিট্রিভ করা হয়।/setরাউট: এখানে সেশনে একটিviewsপ্রপার্টি সংরক্ষণ করা হচ্ছে, এবং প্রতিবার রিকোয়েস্টের মাধ্যমে এর মান ১ বাড়ানো হচ্ছে।/getরাউট: এখানে সেশন থেকেviewsপ্রপার্টি রিট্রিভ করা হচ্ছে।/destroyরাউট: এখানে সেশন ধ্বংস করা হচ্ছে (ctx.session = null), যা সেশন ডেটা মুছে ফেলবে।
৩. Session কুকি কনফিগারেশন
আপনি koa-session এর কনফিগারেশন কিছু অতিরিক্ত অপশন দিয়ে কাস্টমাইজ করতে পারেন, যেমন কুকি’র মেয়াদ, সিকিউরিটি, HTTP-only সেটিংস, ইত্যাদি।
কাস্টম কুকি কনফিগারেশন:
app.use(session({
key: 'koa.sess', // কুকির জন্য নাম
maxAge: 86400000, // কুকি মেয়াদ, এখানে ২৪ ঘণ্টা
httpOnly: true, // শুধুমাত্র HTTP রিকোয়েস্টে কুকি অ্যাক্সেসযোগ্য
signed: true // কুকি এনক্রিপশন
}, app));
key: কুকির নামmaxAge: কুকির মেয়াদ (এখানে এটি ২৪ ঘণ্টা)httpOnly: কুকি শুধুমাত্র HTTP রিকোয়েস্টের মাধ্যমে অ্যাক্সেসযোগ্য হবে, জাভাস্ক্রিপ্টের মাধ্যমে অ্যাক্সেস করা যাবে না।signed: কুকি এনক্রিপ্ট করা হবে।
৪. Session Debugging
আপনি কুকি এবং সেশন তথ্য ডিবাগ করতে চান, তবে KoaJS একটি শক্তিশালী ডিবাগging সুবিধা প্রদান করে। ctx.session এর মান চেক করে আপনি সহজেই সেশন ডেটা দেখতে পারবেন।
router.get('/debug', (ctx) => {
console.log(ctx.session); // সেশন ডেটা লগ করা
ctx.body = 'Session data logged to console';
});
এখন আপনি /debug রুটে রিকোয়েস্ট পাঠালে সেশন ডেটা কনসোলে দেখতে পারবেন।
৫. Session Persistence (Redis)
আপনি যদি সেশন ডেটা সার্ভারে পার্সিস্ট করতে চান (যেমন Redis বা ডাটাবেসে), তবে koa-session Redis স্টোরেজের মাধ্যমে সেশন ডেটা সংরক্ষণ করা সম্ভব। Redis কনফিগারেশন করার জন্য আপনাকে koa-redis লাইব্রেরি ব্যবহার করতে হবে।
npm install koa-redis
এবং Redis কনফিগারেশন:
const redisStore = require('koa-redis');
app.use(session({
store: redisStore()
}, app));
এটি সেশন ডেটা Redis-এ সংরক্ষণ করবে এবং সেখানে থেকে সেশন ডেটা অ্যাক্সেস করা সম্ভব হবে।
সারাংশ
koa-session হল একটি খুবই সহজ এবং কার্যকরী টুল যা KoaJS-এ সেশন ম্যানেজমেন্ট পরিচালনা করতে সাহায্য করে। এটি কুকির মাধ্যমে সেশন ডেটা সংরক্ষণ করে এবং সেশন প্রপার্টি ব্যবহার করে ডেটা অ্যাক্সেস করা সম্ভব হয়। KoaJS-এ সেশন কনফিগারেশন, কুকি সেটিংস, এবং সেশন ভ্যালু ম্যানিপুলেশন খুবই সহজ এবং কার্যকরী। আপনি চাইলে Redis বা অন্যান্য ডাটাবেসের মাধ্যমে সেশন পার্সিস্টেন্সও কনফিগার করতে পারেন।
Read more