ওভারভিউ
এক্সপ্রেস.জেএস ব্যবহারকারীর ব্রাউজারে একটি সেশন আইডি (একটি এনক্রিপশন স্বাক্ষর সহ) সংরক্ষণ করার জন্য একটি কুকি ব্যবহার করে এবং তারপরে অনুরোধে সার্ভারে সঞ্চিত সেশন তথ্য পুনরুদ্ধার করতে সেই কুকির মান ব্যবহার করে। এই সার্ভারের সাইড স্টোরেজটি একটি মেমরি স্টোর (ডিফল্ট) বা অন্য কোনও স্টোর হতে পারে যা প্রয়োজনীয় পদ্ধতিগুলি কার্যকর করে (যেমন কানেক্ট-রেডিস )।
বিশদ
এক্সপ্রেস.জেএস / কানেক্ট এটি ব্যবহার করে একটি 24-বর্ণের বেস 64 স্ট্রিং তৈরি করে utils.uid(24)
এবং এতে সঞ্চয় করে req.sessionID
। এই স্ট্রিংটি তখন কুকিতে মান হিসাবে ব্যবহৃত হয়।
মক্কেলের পক্ষে
স্বাক্ষরিত কুকিজ সর্বদা সেশনের জন্য ব্যবহৃত হয়, তাই কুকির মানটি নিম্নলিখিত ফর্ম্যাটটিতে থাকবে।
[sid].[signature]
যেখানে [এসআইডি] সেশনআইডি এবং সেশন মিডওয়্যারটি শুরু করার সময় প্রদত্ত গোপন কীটি ব্যবহার করে স্বাক্ষর করে [এসআইডি] তৈরি করে [স্বাক্ষর] উত্পন্ন হয়। হস্তক্ষেপ রোধ করতে স্বাক্ষরকারী পদক্ষেপটি করা হয়েছে। এটি [sid] সংশোধন এবং তারপরে ব্যবহৃত গোপন কীটি না জেনে [স্বাক্ষর] পুনরায় তৈরি করার জন্য গণনামূলকভাবে অক্ষম হতে হবে। সেশন কুকি এখনও চুরি এবং পুনরায় ব্যবহারের জন্য ঝুঁকিপূর্ণ, যদি [এসড] এর কোনও সংশোধন প্রয়োজন হয় না।
এই কুকির নাম
connect.sid
সার্ভার সাইড
একটি হ্যান্ডলার পরে হয় তাহলে cookieParser
এবং session
মিডলওয়্যার এটা পরিবর্তনশীল অ্যাক্সেস থাকবে req.cookies
। এটিতে একটি জেএসওএন অবজেক্ট রয়েছে যার কীগুলি হ'ল কুকি কী এবং মানগুলি কুকি মান। এটিতে একটি কী যুক্ত থাকবে connect.sid
এবং এর মান সই করা সেশন শনাক্তকারী হবে।
এখানে এমন কোনও রুট সেট আপ করার একটি উদাহরণ রয়েছে যা প্রতিটি অনুরোধে সেশন কুকির অস্তিত্বের জন্য যাচাই করবে এবং কনসোলটিতে এর মানটি মুদ্রণ করবে।
app.get("/*", function(req, res, next) {
if(typeof req.cookies['connect.sid'] !== 'undefined') {
console.log(req.cookies['connect.sid']);
}
next();
});
আপনার কনফিগার বিভাগের app.use(app.router)
পরে cookieParser
এবং রাউটারটি ( ) অন্তর্ভুক্ত রয়েছে তাও আপনাকে নিশ্চিত করতে হবে session
।
নিম্নলিখিতটি এক্সপ্রেস.জেএস / কানেক্ট দ্বারা অভ্যন্তরীণভাবে সঞ্চিত ডেটার উদাহরণ।
{
"lastAccess": 1343846924959,
"cookie": {
"originalMaxAge": 172800000,
"expires": "2012-08-03T18:48:45.144Z",
"httpOnly": true,
"path": "/"
},
"user": {
"name":"waylon",
"status":"pro"
}
}
user
ক্ষেত্র কাস্টম হয়। বাকি সবই সেশন ম্যানেজমেন্টের অংশ।
উদাহরণটি এক্সপ্রেস 2.5 এর।