سؤال

لدي مشكلة في ميزات المصادقة لـ Servlet 3.0:

مع هذا الرمز في Servlet V3:

log.info(""+request.getUserPrincipal());
log.info(""+request.getAuthType());
log.info("===^===");
request.logout() ;
log.info(""+request.getUserPrincipal());
log.info(""+request.getAuthType());
request.authenticate(response) ;
log.info("===v===");
log.info(""+request.getUserPrincipal());
log.info(""+request.getAuthType());

أود دائماً نتوقع رؤية اسم المستخدم/تسجيل الدخول إلى النوافذ ، بسبب logout() وظيفة. بدلاً من ذلك ، يبدو أنها آلية "ذاكرة التخزين المؤقت" التي تعيد اعتماد بيانات الاعتماد وإلغاء تسجيل الدخول الخاص بي ...

مسؤل

أساسي

===^===

لا شيء

لا شيء

=== V ===

مسؤل

أساسي

هل هي مشكلة في Firefox ، أو شيء أفتقده في رمز Servlet؟

هل كانت مفيدة؟

المحلول

أتوقع دائمًا رؤية نوافذ اسم المستخدم/تسجيل الدخول بسبب logout() وظيفة. بدلاً من ذلك ، يبدو أنها آلية "ذاكرة التخزين المؤقت" التي تعيد اعتماد بيانات الاعتماد وإلغاء تسجيل الدخول الخاص بي ...

هذه هي الطريقة التي تم تصميم HTTP Basic Auth ، فهي تتيح أن يتم الاحتفاظ بجميع حالة المصادقة في العميل. وبعبارة أخرى ، لها غير ممكن لتسجيل الخروج باستخدام مصادقة Basic/Digest ، لا يمكن للخادم منع العميل من التخزين المؤقت وإعادة تركيب مصادقة مصادقة أساسية على الطلبات اللاحقة إلى الخادم.

اقتراحي هو استخدام المصادقة القائمة على النموذج و login طريقة HTTPServletRequest.

مراجع

نصائح أخرى

إنه ليس كذلك. بمجرد تسجيل الدخول ، سيقوم المتصفح دائمًا بتمرير معرف المستخدم وكلمة المرور إلى عنوان URL. حتى تقوم بإعادة تشغيل متصفحك. بقدر ما أعرف كل متصفح يفعل ذلك. وبقدر ما أعرف أنه لا توجد وسيلة حاليًا لإخبار المتصفح أن ينسى بيانات الاعتماد.

ومع ذلك ، سترى أن جلستك ستكون مختلفة بمجرد تسجيل الخروج. الحل المعتاد هو إضافة متغير من نوع ما إلى الجلسة. قل "loggedin". إذا كان هذا المتغير مفقودًا ، فأنت تعرف أن على المستخدم تسجيل الدخول أولاً وسيتم إعادة توجيهه ليقول login.jsp. وبمجرد اجتياز المستخدم هذا JSP ، تقوم بتعيين هذا المتغير مرة أخرى.

باستخدام المرشحات ، يمكنك فرض هذا النظام على مستوى النظام.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top