سؤال

لدي مشروع يقوم بتشغيل MVC4 واستخدام عضوية بسيطة للمصادقة. أريد فقط السماح للمستخدم بتسجيل الدخول على مستعرض واحد. لجعل هذا شفافا للمستخدم، أحتاج إلى وسيلة للحصول على أي متصفح موثني آخر تسجيل الخروج كلما سجل المستخدم. هذا يعني، إذا حاول مستخدمي استخدام نفس تسجيل الدخول، فسوف يركلون فقط بعضهم البعض من صنع ذلك غير مثمر للغاية.

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

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

إذا كان أي شخص لديه حل أنيق لهذا، فسأكون ممتنا ذلك!

هذا هو ما أستخدمه حاليا لقفل المستخدمين في تسجيل دخول واحد فقط:

تسجيل الدخول:

giveacodicetagpre.

global.asax

giveacodicetagpre.

تسجيل الخروج:

giveacodicetagpre.

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

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

المحلول

لا يوجد شيء مدمج لهذا. يجب عليك تطوير بعض المنهجية لوحدك. كنت بحاجة أساسا قطعتين:

  1. بعض الطرق لتتبع المستخدم المسجل عبر الطلبات عبر الطلبات. قد يكون هذا بسيطا مثل طاولة مع عمود اسم المستخدم الذي يمكنك استخدامه لتحديد ما إذا كان قد تم تسجيل اسم مستخدم معين. كنت بحاجة إلى الحفاظ على هذا المزامنة مع تسجيل الدخول / تسجيل الدخول بالطبع، وستحتاج أيضا إلى تخزين معرف الجلسة للمستخدم. ستحتاج إلى ذلك بالنسبة للقطعة التالية:

  2. بعض آلية إزالة الجلسة من أي متجر موجود فيها. سيكون هذا أسهل إذا كنت تستخدم جلسات SQL، كما يمكنك ببساطة حذف الصف من جدول جلسة الجدول مع معرف المطابقة. لا توجد طريقة للقيام بذلك مباشرة باستخدام ASP.NET، لذلك يجب عليك الاستعلام مباشرة قاعدة البيانات، استخدم إجراء مخزن، إلخ.

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

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