سؤال

أريد أن أكون قادرا على قتل الدورات القائمة على نفس اسم المستخدم عندما يقوم شخص ما بتسجيل الدخول إلى منع العديد من الناس من استخدام نفس معلومات تسجيل الدخول.

هل هناك طريقة من خلال تكرار الدورات القائمة و قتلهم ؟

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

المحلول

وهذا إضافة إلى global.asax بك

protected void Application_Start(object sender, EventArgs e)
{
    Application["sessions"] = new List<HttpSessionState>();
}

protected void Session_Start(object sender, EventArgs e)
{
    var sessions = (List<HttpSessionState>)Application["sessions"];
    sessions.Add(this.Session);
}

protected void Session_End(object sender, EventArgs e)
{
    var sessions = (List<HttpSessionState>)Application["sessions"];
    sessions.Remove(this.Session);
}

والآن يمكنك تكرار خلال جلسات العمل الخاصة بك مثل هذا

var sessions = (List<HttpSessionState>)Application["sessions"];

foreach (var session in sessions)
       ...

في أجل قتل الجلسات الأخرى في هل يمكن الاختيار في طريقة Session_Start للدورة القديمة التخلي عنه. قد تبدو شيئا من هذا القبيل.

protected void Session_Start(object sender, EventArgs e)
{
    var userId = (int)this.Session["userId"];
    foreach (var session in sessions)
        if ((int)session["userId"] == userId)
           session.Abandon();

    var sessions = (List<HttpSessionState>)Application["sessions"];
    sessions.Add(this.Session);
}

نصائح أخرى

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

والجواب باختصار: لا.

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

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

إيقاف الكفة:

في Session_Start (عادة دخول ناجح)، في مخزن معرف المستخدم الخاص بالمستخدم وجلسة الهوية في جدول بحث (أو عمود جديد في الجدول المستخدم).

في طلب كل ما كنت بحاجة للتحقق من أن هوية المستخدم (المخزنة في الدورة) وجلسة الهوية تطابق القيم المخزنة في جدول البحث كخطوة المصادقة.

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