আমাদের জাজানো অ্যাপ্লিকেশনটির নিম্নলিখিত সেশন পরিচালনার প্রয়োজনীয়তা রয়েছে।
- ব্যবহারকারী ব্রাউজারটি বন্ধ করলে সেশনগুলির মেয়াদ শেষ হয়।
- নিষ্ক্রিয়তার একটি সময় পরে সেশনগুলির মেয়াদ শেষ হবে।
- নিষ্ক্রিয়তার কারণে যখন একটি সেশনটির মেয়াদ শেষ হয় তখন সনাক্ত করুন এবং ব্যবহারকারীকে উপযুক্ত বার্তা প্রদর্শন করুন।
- নিষ্ক্রিয়তার সময়কালের সমাপ্তির কয়েক মিনিট আগে ব্যবহারকারীদের আসন্ন অধিবেশনটির মেয়াদ শেষ হওয়ার বিষয়ে সতর্ক করুন। সতর্কতা সহ, ব্যবহারকারীদের তাদের সেশনটি বাড়ানোর জন্য একটি বিকল্প সরবরাহ করুন।
- যদি ব্যবহারকারী অ্যাপ্লিকেশনটির মধ্যে দীর্ঘ ব্যবসায়িক ক্রিয়াকলাপে কাজ করে যা সার্ভারে প্রেরণ করার অনুরোধ জড়িত না, সেশনটির সময়সীমা শেষ হওয়া উচিত নয়।
ডকুমেন্টেশন, জ্যাঙ্গো কোড এবং এটি সম্পর্কিত কিছু ব্লগ পোস্ট পড়ার পরে, আমি নিম্নলিখিত বাস্তবায়ন পদ্ধতির সাথে উপস্থিত হয়েছি।
প্রয়োজনীয়তা 1
এই প্রয়োজনটি সহজেই SESSION_EXPIRE_AT_BROWSER_CLOSE সত্য এ সেট করে প্রয়োগ করা হয়।
প্রয়োজনীয়তা 2
আমি অধিবেশনটির মেয়াদ শেষ হওয়ার সময়কাল সেট করতে SESSION_COOKIE_AGE ব্যবহার করার জন্য কয়েকটি সুপারিশ দেখেছি। তবে এই পদ্ধতিতে নিম্নলিখিত সমস্যা রয়েছে।
ব্যবহারকারী সক্রিয়ভাবে অ্যাপ্লিকেশনটি ব্যবহার করছেন এমনকি সেশনটি SESSION_COOKIE_AGE শেষে সর্বদা শেষ হয়। (প্রতিটি কাস্টম মিডলওয়্যার ব্যবহার করে প্রতিটি অনুরোধে SESSION_COOKIE_AGE এ সেশনটির মেয়াদ নির্ধারণ করে বা প্রতিটি অনুরোধে সেশনটি সংরক্ষণ করে SESSION_SAVE_EVERY_REQUEST টি সত্য হিসাবে সেট করে এটি প্রতিরোধ করা যেতে পারে But তবে পরবর্তী সমস্যাটি SESSION_COOKIE_AGE ব্যবহারের কারণে অনিবার্য।)
কুকিগুলি যেভাবে কাজ করে তার কারণে, SESSION_EXPIRE_AT_BROWSER_CLOSE এবং SESSION_COOKIE_AGE পারস্পরিক একচেটিয়া অর্থাৎ কুকি ব্রাউজারের নিকটে বা নির্দিষ্ট মেয়াদোত্তীনের সময় শেষ হয়। যদি SESSION_COOKIE_AGE ব্যবহার করা হয় এবং কুকির মেয়াদ শেষ হওয়ার আগে ব্যবহারকারী ব্রাউজারটি বন্ধ করে দেয়, কুকিটি ধরে রাখা হয় এবং ব্রাউজারটি পুনরায় খোলার ফলে ব্যবহারকারীকে (বা অন্য কেউ) পুনরায় প্রমাণীকরণ না করে সিস্টেমে অনুমতি দেয়।
জাজানো সেশনটি সক্রিয় কিনা তা নির্ধারণ করতে কেবল কুকি উপস্থিত থাকার উপর নির্ভর করে। এটি অধিবেশন সঞ্চিত অধিবেশন মেয়াদ শেষ হওয়ার তারিখটি পরীক্ষা করে না।
নিম্নলিখিত পদ্ধতিটি এই প্রয়োজনীয়তাটি প্রয়োগ করতে এবং উপরে বর্ণিত সমস্যাগুলি সমাধানের জন্য ব্যবহার করা যেতে পারে।
- SESSION_COOKIE_AGE সেট করবেন না।
- প্রতিটি অনুরোধে সেশনটির মেয়াদ শেষ হওয়ার তারিখটিকে 'বর্তমান সময় + নিষ্ক্রিয়তার সময়কাল' হিসাবে সেট করুন।
- সেশনমিডলওয়্যারের প্রসেস_ের অনুরোধকে ওভাররাইড করুন এবং সেশনের মেয়াদ শেষ হওয়ার জন্য পরীক্ষা করুন। সেশনটির মেয়াদ শেষ হয়ে গেলে তা বাতিল করুন।
প্রয়োজনীয়তা 3
যখন আমরা সনাক্ত করি যে অধিবেশনটির মেয়াদ শেষ হয়ে গেছে (উপরের কাস্টম সেশনমিটলওয়ারে), সেশনটির মেয়াদ শেষ হওয়ার অনুরোধ করার অনুরোধটিতে একটি বৈশিষ্ট্য সেট করুন। এই বৈশিষ্ট্যটি ব্যবহারকারীর জন্য উপযুক্ত বার্তা প্রদর্শন করতে ব্যবহার করা যেতে পারে।
প্রয়োজনীয়তা 4
ব্যবহারকারীর নিষ্ক্রিয়তা সনাক্ত করতে জাভাস্ক্রিপ্ট ব্যবহার করুন, সতর্কতা প্রদান করুন এবং সেশনটি বাড়ানোর জন্য একটি বিকল্পও দিন। যদি ব্যবহারকারী প্রসারিত করতে চান তবে সেশনটি বাড়ানোর জন্য সার্ভারে একটি জীবন্ত পালস রাখুন।
প্রয়োজনীয়তা 5
ব্যবহারকারীর ক্রিয়াকলাপ সনাক্তকরণের জন্য জাভাস্ক্রিপ্ট ব্যবহার করুন (দীর্ঘ ব্যবসায়িক ক্রিয়াকলাপের সময়) এবং সেশনটির মেয়াদ শেষ হতে আটকাতে সার্ভারে জীবন্ত ডালগুলি প্রেরণ করুন।
উপরোক্ত বাস্তবায়ন পদ্ধতির বিষয়টি খুব বিস্তৃত বলে মনে হচ্ছে এবং আমি ভাবছিলাম যে কোনও সহজ পদ্ধতি থাকতে পারে (বিশেষত প্রয়োজন 2 এর জন্য)।
যে কোনও অন্তর্দৃষ্টি অত্যন্ত প্রশংসা করা হবে।