আমি জানি এটির সদৃশ হিসাবে চিহ্নিত হওয়ার দুর্দান্ত সুযোগ রয়েছে তবে আমি যা খুঁজছি ঠিক তা খুঁজে পেল না
এটি একটি সাধারণ সমস্যা এবং আমি নিশ্চিত এটির কিছু ভাল সংজ্ঞাযুক্ত সেরা অনুশীলন সমাধান রয়েছে
পটভূমি
একটি একক পৃষ্ঠা সাস অ্যাপ্লিকেশনটিতে প্রচুর ড্র্যাগ এবং ড্রপ রয়েছে, ব্যবহারকারী সময়কালের জন্য খুব বেশি সার্ভার যোগাযোগ ছাড়াই এটির সাথে যোগাযোগ করতে পারে
একটি অবিচলিত সেশন কুকি ব্যবহার করে সার্ভার সেশনটি কেবলমাত্র ব্যবহারকারী অবজেক্টকে ধারণ করে
X ঘন্টা পরে সার্ভারে সেশনটির মেয়াদ শেষ হবে
কিছু জিনিস কেবল লগ ইন করার সময় লোড হয়
সমস্যা
- ব্যবহারকারী অ্যাপ্লিকেশনটিতে কাজ করে, হয়ে গেলে ব্যবহারকারী লগ আউট করে না, কেবল ব্রাউজারটি খোলা রাখে
- ব্যবহারকারী X ঘণ্টারও বেশি সময় পরে ফিরে আসবে (সেশনটিতে সেশনটি অবৈধ)
- সার্ভার সংযোগের প্রয়োজন ছাড়াই ব্যবহারকারী অ্যাপ্লিকেশনটির সাথে যোগাযোগ করে (জিনিসগুলি টেনে এনে ফেলে দেয়, পাঠ্য সম্পাদনা ...)
- কেবলমাত্র পরবর্তী সার্ভারের মিথস্ক্রিয়াতে (ধরে নেওয়া যাক কোনও অটো সেভ নেই) ব্যবহারকারী লগইন পৃষ্ঠায় ফেলে দেওয়া হয় এবং তাদের কিছু কাজ হারিয়ে ফেলে
সম্ভাব্য সমাধান
আমি মনে মনে কিছু সমাধান এখানে দিচ্ছি, অন্য কোনও আছে কিনা তা শুনতে চাই এবং সেগুলির কোনওর সাথে যদি মূলত কোনও ভুল থাকে wrong
1. ব্যবহারকারীকে কখনও লগ আউট করবেন না
- কিভাবে? হয় দীর্ঘ সেশন রাখুন, একটি অবিরাম কুকি রাখুন, বা জাভা স্ক্রিপ্ট "বেঁচে থাকুন" পিং করুন ing
- পেশাদাররা : ব্যবহারকারীর কোনও কিছুর বিষয়ে চিন্তা করার দরকার নেই, তাদের জন্য সমস্যাটি সমাধান করে
- কনস : পিসিআই অনুগত নয়, সুরক্ষিত নয়, এবং বিকাশের পরিবর্তনগুলির প্রয়োজন, যেমন কেবল ব্যবহারকারী লগ-এ সেশনে লোড হওয়া জিনিসগুলির মধ্যে একটি পাব সাব মডেল (ইভেন্টের পরিবর্তনগুলি শুনুন) এ যাওয়ার বা ক্যাশে আউটআউট হওয়া দরকার।
2. স্থানীয় স্টোরেজ
- কিভাবে? লগ আউট হয়ে থাকলে অস্থায়ীভাবে স্টেট স্টোর করতে নতুন স্থানীয় স্টোরেজ ব্যবহার করুন, লগইন পৃষ্ঠায় পুনর্নির্দেশ করুন, একবার লগইন করুন
- পেশাদাররা : সেশনের সময়সীমা সামাল দেওয়ার জন্য নয়, "ওয়ার্ক অফলাইন" সমর্থনের জন্যও ভিত্তি করে
- কনস : বাস্তবায়নের পক্ষে আরও শক্ত, ডেটা ট্রিতে রাষ্ট্রীয় সংহতকরণ করা দরকার, সমস্ত ব্রাউজার সমর্থন করে না
3. অটো সেভ
প্রতিটি ব্যবহারকারীর ক্রিয়া যা মডেলটি পরিবর্তন করে তা অবিলম্বে অবিরত হওয়া উচিত (বা কোনও ক্লায়েন্টের সাইডের কাতারের মাধ্যমে), উদাহরণস্বরূপ যদি তারা একটি চেকবক্স চেক করে, একটি পাঠ্য ক্ষেত্র পরিবর্তন করে, অথবা কিছু হয়ে যায় এবং একবার ড্রপ করে ফেলে দেয়, পরিবর্তনগুলি অবিরত রাখে।
- কিভাবে? মডেলটিকে আবদ্ধ করতে একটি এমভি ** ফ্রেমওয়ার্ক (ব্যাকবোন.জেএস / নকআউট.জেএস / এমবার.জেএসস / অ্যাঙ্গুলার.জেএস ইত্যাদি) ব্যবহার করুন এবং পরিবর্তনগুলি অবিরত রাখুন।
- পেশাদাররা : একটি পরিষ্কার সমাধানের মতো বলে মনে হচ্ছে, ব্যবহারকারী যতক্ষণ সক্রিয় ততক্ষণ সেশন সক্রিয় থাকে, কোনও ক্লায়েন্টের পক্ষের কাজ এটি চালিয়ে না নিয়ে করা হয়।
- কনস : সেশন সময় শেষ হওয়ার পরে সর্বশেষ অ্যাকশন ব্যবহারকারী করছেন।
৪. সেশনটির মেয়াদ শেষ হওয়ার পরে ব্যবহারকারীকে লগ আউট করুন
এটির বেশ কয়েকটি পন্থা থাকতে পারে
সার্ভারকে জিজ্ঞাসা করুন "সেশনটির মেয়াদ শেষ হয়ে গেছে" - এটি 22 / শ্রডঞ্জারের বিড়াল ধরা খুব সামান্য, কারণ সার্ভারের কাছে কেবল প্রশ্নটি অধিবেশন প্রসারিত করে (সময়সীমা পুনরায় আরম্ভ করে),
- কিভাবে? হয় এমন একটি সার্ভার রয়েছে যা এই জাতীয় প্রশ্নকে সমর্থন করে (আমি কারও সম্পর্কে জানি না, তবে আমি জাভা স্থল রূপে এসেছি) অথবা, কেবলমাত্র সেশন আইডির একটি টেবিল রাখা যেতে পারে, এবং ম্যানুয়ালি শেষ অ্যাক্সেসের সময়টি রাখতে হবে এবং সেশনটি পাস করে সার্ভারকে জিজ্ঞাসা করুন কুকির পরিবর্তে প্যারামিটার হিসাবে আইডি, এটি এমনকি সম্ভব কিনা তাও আমি নিশ্চিত নই, তবে এটি বিপজ্জনক, সুরক্ষিত এবং খারাপ ডিজাইনের যা মনে হয় lo লগিন পৃষ্ঠায়, একবার লগইন করা চালিয়ে যান
- পেশাদাররা : যদি সার্ভারগুলিতে এ জাতীয় নেটিভ সমর্থন ছিল, একটি পরিষ্কার, বৈধ প্রশ্নের মতো শোনায় (ব্যবহারকারী এক্স এর এখনও একটি সেশন রয়েছে কিনা তা জিজ্ঞাসা করে যদি তা না করে এটি পুনর্নবীকরণ না করে)
- কনস : সার্ভার যদি এটি সমর্থন না করে (এবং আবারও, কোনও সার্ভার বা কাঠামোর এই কার্যকারিতা রয়েছে কিনা তা আমি জানি না) তবে কর্মক্ষেত্রটির সম্ভাব্যত বিশাল নিরাপত্তা ঝুঁকি রয়েছে।
আমি শুনেছি যে এক জালিয়াতির সার্ভার সাইডে একটি সংক্ষিপ্ত অধিবেশন রয়েছে, এবং একটি ক্লায়েন্ট সাইড পিং রাখুন, এতে সর্বাধিক সংখ্যক পিং রয়েছে
- কিভাবে? সার্ভারে সংক্ষিপ্ত অধিবেশন, ক্লায়েন্টের প্রতিটি সেশনের পিংস টাইমআউট / ২, ওয়াইয়ের সর্বাধিক পুনরায় চেষ্টা করে has
- পেশাদাররা : সমস্যাগুলি দ্রুত এবং নোংরা করা ঠিক করা
- কনস : একটি হ্যাকের মতো মনে হচ্ছে, সার্ভারটিকে এটি করার পরিবর্তে সেশনটি নিজেকে পুনর্নবীকরণের মাধ্যমে পরিচালনা করা
ক্লায়েন্ট সাইড টাইমার
কিভাবে? ক্লায়েন্টের পাশে টাইমার রেখে সার্ভারের সাথে এটি সিঙ্ক করে প্রতিটি অনুরোধে সর্বোচ্চ সার্ভার সেশন টাইমআউট বিয়োগ কিছু প্যাডিংয়ের সমান হওয়ার অনুরোধ করে, ব্যবহারকারী যখন সার্ভারে কোনও অনুরোধ প্রেরণ না করে, ইউআই একটি "সেশনগুলি দেখায় সময় শেষ হতে চলেছে, আপনি কি চালিয়ে যেতে চান? " (যেমন আপনার অনলাইন ব্যাংকিং রয়েছে)
পেশাদাররা : সমস্যার সমাধান করে
- কনস : সিঙ্কটি কাজ করে তা নিশ্চিত করার প্রয়োজন ব্যতীত অন্য কোনওটির কথা চিন্তা করতে পারে না
প্রশ্নটি
আমি উপরের বিশ্লেষণে সম্ভবত কিছু অনুভব করছি, কিছু মূর্খ ভুল হতে পারে এবং সেগুলি সংশোধন করতে আমি আপনার সহায়তা চাই। এর জন্য আমার আর কী সমাধান থাকতে পারে?
now
। ৪.২ আপনার সার্ভারটি মারার এবং ব্যয় বৃদ্ধির দুর্দান্ত উপায় বলে মনে হচ্ছে 4.3 অ্যান্ড্রয়েডে, হোম স্ক্রিনে ফিরে আসার পরে আমি নিশ্চিত যে প্রক্রিয়াটি বিরতি পেয়েছে এবং এটি আপনার ক্লায়েন্টের টাইমারকে হস্তক্ষেপ করতে পারে।