আপনি এবং না করা উচিত ব্রাউজারের পিছনে বাটন বা ইতিহাস অক্ষম । এটি ব্যবহারকারীর অভিজ্ঞতার জন্য খারাপ। জাভাস্ক্রিপ্ট হ্যাকগুলি রয়েছে তবে সেগুলি নির্ভরযোগ্য নয় এবং ক্লায়েন্টের জেএস অক্ষম থাকলে তাও কাজ করবে না।
আপনার কংক্রিট সমস্যাটি হ'ল অনুরোধ করা পৃষ্ঠাটি সার্ভার থেকে সরাসরি ব্রাউজারের ক্যাশে থেকে লোড করা হয়েছে। এটি মূলত নিরীহ, তবে প্রকৃতপক্ষে অন্তর্নিবেশকারীকে বিভ্রান্ত করছে কারণ এস / সে ভুলভাবে মনে করে যে এটি সত্যই সার্ভার থেকে আসছে।
সমস্ত সীমাবদ্ধ জেএসপি পৃষ্ঠাগুলি ক্যাশে না করার জন্য আপনাকে কেবল ব্রাউজারকে নির্দেশ দেওয়া দরকার (এবং এটি কেবল লগআউট পৃষ্ঠা / ক্রিয়া নিজেই নয়!)। এইভাবে ব্রাউজারটি ক্যাশে পরিবর্তে সার্ভার থেকে পৃষ্ঠাটি অনুরোধ করতে বাধ্য হয় এবং তাই সার্ভারে সমস্ত লগইন চেকগুলি কার্যকর করা হবে। আপনি একটি ব্যবহার করতে পারেন ফিল্টার যা সেট করে প্রয়োজনীয় প্রতিক্রিয়া হেডার মধ্যে পদ্ধতি:doFilter()
@WebFilter
public class NoCacheFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);
chain.doFilter(req, res);
}
}
উদাহরণস্বরূপ, আগ্রহের ভিত্তিতে Filterএটি মানচিত্র করুন ।url-pattern*.jsp
@WebFilter("*.jsp")
অথবা আপনি যদি এই সীমাবদ্ধতাটি কেবল সুরক্ষিত পৃষ্ঠাগুলিতে রাখতে চান তবে আপনার একটি ইউআরএল প্যাটার্ন নির্দিষ্ট করা উচিত যা এই সমস্ত সুরক্ষিত পৃষ্ঠাগুলি জুড়ে। উদাহরণস্বরূপ, যখন তারা সমস্ত ফোল্ডারে থাকে /appতখন আপনাকে এর URL প্যাটার্ন নির্দিষ্ট করতে হবে /app/*।
@WebFilter("/app/*")
আরও বেশি, আপনি Filterযেখানে লগ ইন থাকা ব্যবহারকারীর উপস্থিতি যাচাই করছেন সেভাবেই আপনি এই কাজটি করতে পারেন ।
পরীক্ষার আগে ব্রাউজার ক্যাশে সাফ করতে ভুলবেন না! ;)
আরো দেখুন: