ما هي أفضل طريقة لتنفيذ مختلطة ASP.NET أشكال المصادقة (AD + DB)?

StackOverflow https://stackoverflow.com/questions/206767

سؤال

أريد أن تنفيذ أشكال المصادقة على ASP.NET موقع, الموقع يجب أن تسعى المستخدم على قاعدة البيانات للحصول على بعض البيانات ومن ثم مصادقة LDAP (Active Directory) للتحقق من صحة المستخدم/كلمة المرور التحرير والسرد.

بعد أن كنت بحاجة للحفاظ على سبيل المثال من الفئة التي تمثل المستخدم من استخدامه في أشكال مختلفة.

حاولت أن تفعل ذلك من قبل مع تسجيل الدخول التحكم الذي يتحقق من الشروط السابقة والقيام AuthenticateEventArgs.Authenticated = true وضعت داخل الكائن الدورة: Session ["user"] = authenticatedUser; ولكن لدي مشكلة مزامنة كل منهم (الدورة انتهت قبل المصادقة كوكي و حصلت NullReferenceExceptions عندما صفحات حاولت استخدام المنحلة كائن جلسة عمل).

الذي هو أفضل وسيلة لتحقيق هذا الهدف ؟ هل هناك طريقة لمزامنة مهلة جلسة عمل مع كوكي عمر ؟ كائن المستخدم يجب أن يتم حفظها في أي طريقة أخرى ؟ هل فاتني النقطة ؟

تحديث:أنا لا يمكن استخدام مصادقة windows مزود لأنه يجب أن يكون الموقع accesible من خارج خارج priate الشبكة.

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

المحلول

وأود أن استخدام مصادقة Windows الرئيسية موفر المصادقة ، ولكن لفة بلدي قاعدة بيانات بسيطة استمرار للحصول على معلومات المستخدم.

جلسة العمل الخاصة بك طريقة العمل ، يمكنك ضبط مهلة جلسة عمل في IIS المباراة إلى ملف تعريف ارتباط المصادقة المهلة.

أيضا, يمكنك أن تفعل شيئا مثل هذا في HTTPModule للقبض على حافة الحالات (تجمع التطبيق بتدوير الخ) هذا أيضا واضح الدورة

Psuedocode:

if (session["user"] == null)
{
    Authentication.SignOut();
}

وهذا من شأنه إجبار المستخدم لمصادقة.

نصائح أخرى

أنا وضعت الدورة المصادقة كوكي قيم مهلة إلى نفس القيمة.يمكنني استخدام النوافذ المنزلقة أجل المصادقة الكعكة.كما جعله عادة لا تفترض أبدا أن القيم أخرج من الدورة غير فارغة قبل محاولة استخدامها.أنا غالبا ما تكون مجردة من كل دورة الوظائف إلى فئة وكيل يحتوي على كتابتها بقوة خصائص القيم أنا مخزن في الدورة.الخطأ التعامل مع سوء الدورة البيانات المترجمة في الوكيل.

تخزين معلومات المستخدم في الدورة سوف تعمل بشكل جيد.مزامنة الدورة مهلة و المصادقة كوكي مهلة فقط تحرير الويب الخاص بك.التكوين:

<sessionState timeout="XX" />
<authentication mode="Forms">
  <forms loginUrl="Login.aspx" timeout="XX" />
</authentication>

كل القيم في دقائق.

اختبار فارغة في كل مرة تحصل على قيمة من الدورة!

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