PDA

View Full Version : ارتباط SESSION_END و کنترلهای لاگین



mehrdad201
چهارشنبه 11 مهر 1386, 16:41 عصر
سلام دوستان عزیز

میخواستم بپرسم که آیا کنترلهای لاگین به رویداد SESSION_END مرتبط هستند؟؟؟

من یه بخش لاگین توسط کنترل لاگین انداختم توی یه صفحه. فایل global.asax رو هم اضافه کردم.

session time رو هم گذاشتم روی 1 دقیقه. بعد از 1 دقیقه با وجود اینکه session end فراخوانی میشه اما یوزر لاگ اوت نمیشه ؟!؟!؟! و همچنان بین پیج ها میتونه حرکت داشته باشه (یعنی به صفحه لاگین منتقل نمیشه)

خواستم بپرسم که اگه یوزر به اصلا به صفحه دست نزنه وفتی که تابع SESSION_END فراخوانی میشه چکار باید کرد که یوزر مطمونا لاگ اوت بشه ؟

mehrdad201
چهارشنبه 11 مهر 1386, 21:02 عصر
الان که داشتم بیشتر بررسی می کردم. متوجه شدم حتی وقتی که یوزر لاگ اوت رو انجام بده باز هم تا یه مدتی مقدار isonline مزبوط به اون true هستش.

من این کد رو دز رویداد LoggingIn کنترل login1 که روی صفحه انداخته بودم قرار دادم.


MembershipUser a = Membership.GetUser(Login1.UserName);
if (a.IsOnline == true)
{
e.Cancel = true;
Label1.Text = "Member is currently online!! Try again later ";
}

متوجه شدم وقتی که یوزر log out میکنه اگه بلافاصله بیاد لاگین کنه به دلیل اینکه a.IsOnline مقدار true داره (به معنی اینکه یوزر آنلاینه) پیغام خطای Member is currently online!! Try again later نشون داده میشه و ادامه کار کنسل میشه.

از بین دوستان کسی میدونه حالا واسه اینکه این حالت پیش نیاد و پراپرتی isonline بلافاصله بعد از لاگ اوت false بشه باید چیکار کرد!؟؟!؟!

در ضمن اگه تو این حالت صفحه رو به حال خودش رها کنیم آیا یوزر اتوماتیک لاگ اوت خواهد شد؟

ali_reza_nazari
پنج شنبه 03 آبان 1386, 10:22 صبح
خیلی جالب بود
ببخشید میشه کد مربوط به لوگین و لوگ اوت رو به صورت یک پروژه دات نت بدی تا من بتونم اون رو توی ویژوال استیودیو دات نت 2005 ببینم
آخه من تا حالا از این دستوراتی که شما نوشته بودید استفاده نکرده بودم
راستش می خواهم یاد بگیرم.
ممنون می شوم

SalarSoft
پنج شنبه 03 آبان 1386, 19:12 عصر
ویژگی IsOnline بر اساس LastActivityDate محاسبه میشه.
مقدار LastActivityDate هم در برخی متد ها مانند
Membership.ValidateUser و Membership.UpdateUser و Membership.CreateUser تغییر می کنه همچنین در برخی از متد های GetUser هم این اتفاق میفته که با استفاده از اون میتونی به هدفت برسی:

MembershipUser a = Membership.GetUser(Login1.UserName,true);
پارمتر دوم باعث میشه که مقدار LastActivityDate به روزرسانی بشه.