PDA

View Full Version : بستن SESSION بعد از Logout کردن



msnabed
پنج شنبه 29 فروردین 1387, 12:02 عصر
سلام . من یک وب سایت نوشتم که کاربران با کد کاربری و رمز وارد اون میشن و باهاش کار میکنن . اما مشکل من در logout کردن کاربران هست . وقتی که کاربری روی کلید logout کلیک میکنه توی برنامه تمام متغیرهای Session رو سیستم می بنده و به صفحه اصلی Redirect میکنه . حالا وقتی کابر کلید Back مرورگر رو میزنه دوباره تمام اطلاعاتی که قبل از logout کردن کاربر در اختیارش بوده نشون میده . لطف کنین کمکم کنید تا بتون بعد از اینکه کاربری logout کرد صفحه کاربر رو Expire کنم .

raravaice
پنج شنبه 29 فروردین 1387, 12:14 عصر
Response.Cache.SetExpires(Now.Date.AddDays(-1))


موفق باشید

violet
پنج شنبه 29 فروردین 1387, 13:16 عصر
شما از چه سیستمی برای ورود کاربران استفاده میکنید؟
اگر از FormsAuthenticationTicket استفاده مکنید :


System.Web.Security.FormsAuthentication.SignOut()

اگر از Session استفاده میکنید:


Session.Abandon()

و اگر از کوکی های خودتان استفاده میکنید راه حل دوست عزیزمون raravaice
موفق باشید.

msnabed
سه شنبه 03 اردیبهشت 1387, 13:18 عصر
با تشکر از راهنمایی شما . عرض کنم که روشهای شما رو امتحان کردم اما وضع به همون منوال هست . ببینید من نام کابری و پسورد رو توی بانک اطلاعاتیم ذخیره کردم . وقتی کاربری نام کاربری و رمز رو وارد می کنه و کلید تایید رو میزنه سیستم نام کاربری و رمز رو با بانک چک میکنه و در صورت درستی اون به صفحه دیگه Redirect میکنه . توی صفحه ای که بهش Redirect شده کلیدی رو با عنوان خروج گذاشتم که بعد از کلیک بر روی اون Session ها رو می بنده و بعد به صفحه اصلی Redirect میکنه . حالا توی صفحه اصلی وقتی کیلد Back از Browser رو میزنم برمیگرده به همون صفحه و اطلاعات کاربر رو نشون میده در صورتی که باید صفحه بعد از Redirect شدن به صفحه اول Expire بشه .




شما از چه سیستمی برای ورود کاربران استفاده میکنید؟
اگر از FormsAuthenticationTicket استفاده مکنید :


System.Web.Security.FormsAuthentication.SignOut()

اگر از Session استفاده میکنید:


Session.Abandon()

و اگر از کوکی های خودتان استفاده میکنید راه حل دوست عزیزمون raravaice
موفق باشید.

twelve
سه شنبه 03 اردیبهشت 1387, 17:13 عصر
1-فکر کنم اگر به جای این نقل قولی که در اخر توضیحاتتون اضافه کردید (و من به شخصه متوجه نشدم منظورتون از اینکار چیه!! ) بهتر بود قسمتهایی از کدتون رو اینجا میذاشتین.

2- بعد از زدن Back یک بار صفحه رو رفرش کن ببین چه اتفاقی میفته

msnabed
چهارشنبه 04 اردیبهشت 1387, 09:07 صبح
سلام . عرض کنم نقل قول رو برای تشکر گذاشته بودم . بعدش هم من تموم کد رو توضیح دادم . اگه مطالعه فرموده باشین ملاحظه می کنید نیز به کد برنامه من نیست . دکه رفرش رو هم که میزنین تغییری حاصل نمیشه .
من قسمت کد logout برنامه رو براتون میزارم .


SqlDataSource1.SelectParameters.Item("Pursuit_Cod").DefaultValue = Nothing

SqlDataSource3.SelectParameters.Item("Pursuit_id").DefaultValue = Nothing

Session.RemoveAll()
DataList1.DataSource = Nothing

DataList2.DataSource = Nothing

DataList1.DataBind()
Response.Cookies.Clear()
Response.ExpiresAbsolute = DateTime.Now
Response.Cache.SetExpires(DateTime.Now.AddDays(-1))
Response.Redirect("~/Default.aspx")



1-فکر کنم اگر به جای این نقل قولی که در اخر توضیحاتتون اضافه کردید (و من به شخصه متوجه نشدم منظورتون از اینکار چیه!! ) بهتر بود قسمتهایی از کدتون رو اینجا میذاشتین.

2- بعد از زدن Back یک بار صفحه رو رفرش کن ببین چه اتفاقی میفته

H_T_O_A
چهارشنبه 04 اردیبهشت 1387, 12:20 عصر
وقتی شما دکمه بک رو تو مرورگر میزنی در اکثر مواقع اصلاً درخواستی به سرور ارسال نمیشه که چک کنه ببینه سشن ست شده یا نه
مرورگر مستقیماً صفحه مربوطه رو از کش خودش میخونه
راه حلش هم جلوگیری از کش شدن صفحه مورد نظر هست که قبلاً تو فرم بحث شده
البته باز هم به مرورگر بستگی داره و ممکنه با اینکه از سرور هدرهای مربوط به کش نشدن صفحه ارسال شده باشه ولی باز هم مرورگر صفحه رو کش کنه مثلاً تو اکستنشنهای فایرفوکس یکیش هست که کارش همینه یعنی باعث میشه مرورگر به هدرهای مربوط به کش نشدن صفحه محل نزاره
البته باید یه راهی باشه که...
من خودمم دنبالشم

Hossein Bazyan
چهارشنبه 04 اردیبهشت 1387, 16:05 عصر
سلام
برای من هم جواب نداد. من همه کدها را امتحان کردم اما دوباره با زدن دکمه برگشت همه اطلاعات موجود هستند!

H_T_O_A
پنج شنبه 05 اردیبهشت 1387, 03:08 صبح
راه حلش ارسال هدرهایی هست که جلوی کش شدن صفحه رو میگیره
اینجوری لااقل وقتی پنجره مرورگر بسته بشه دیگه اون صفحه اعتبار نداره و پاک میشه
اون موارد استثنا هم که گفتم نادر هست و کار زیادی از دست طراح بر نمیاد مگر اینکه بیاد صفحه رو طوری طراحی کنه که آدرس صفحه ای که بعد از logout نمایش داده میشه با آدرس صفحه مدیریتی دقیقاً یکی باشه اینجوری صفحه جدید جای صفحه قبلی رو تو کش مرورگر میگیره

H_T_O_A
پنج شنبه 05 اردیبهشت 1387, 03:21 صبح
میگن اگه از امکانات authentication خود asp.net استفاده میکنید میتونید از این استفاده کنید

FormsAuthentication.SignOut()
چیز خوبیه امتحان کنید ببینید جواب میده یا نه؟

Hossein Bazyan
پنج شنبه 05 اردیبهشت 1387, 09:54 صبح
راه حلش ارسال هدرهایی هست که جلوی کش شدن صفحه رو میگیره
اینجوری لااقل وقتی پنجره مرورگر بسته بشه دیگه اون صفحه اعتبار نداره و پاک میشه
اون موارد استثنا هم که گفتم نادر هست و کار زیادی از دست طراح بر نمیاد مگر اینکه بیاد صفحه رو طوری طراحی کنه که آدرس صفحه ای که بعد از logout نمایش داده میشه با آدرس صفحه مدیریتی دقیقاً یکی باشه اینجوری صفحه جدید جای صفحه قبلی رو تو کش مرورگر میگیره
سلام
کاش شیوه کار رو هم میگفتید

Behrouz_Rad
پنج شنبه 05 اردیبهشت 1387, 20:25 عصر
<%@ OutputCache Duration="1" VaryByParam="*" %>

private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
// do not cache page.
Response.CacheControl = "no-cache" ;
Response.AddHeader( "Pragma", "no-cache" );
Response.Expires = -1 ;

if(Session["xxx"]==null) // dafe avaleshe!
Session["xxx"]=1;
else //hehe! bi tarbiat!
Response.Redirect("go_to_error_page.aspx");// our error page.
}
}

msnabed
یک شنبه 15 اردیبهشت 1387, 09:40 صبح
با سلام و تشكر از همه دوستان مخصوصا آقا بهروز . مشكل من حل شد . البته اگه فقط تنها اين خط رو :
Response.CacheControl = "no-cache" ;
توي Page_load بعد از page.ispostback بزاريم مشكل حل ميشه .





<%@ OutputCache Duration="1" VaryByParam="*" %>

private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
// do not cache page.
Response.CacheControl = "no-cache" ;
Response.AddHeader( "Pragma", "no-cache" );
Response.Expires = -1 ;

if(Session["xxx"]==null) // dafe avaleshe!
Session["xxx"]=1;
else //hehe! bi tarbiat!
Response.Redirect("go_to_error_page.aspx");// our error page.
}
}

m.hamidreza
چهارشنبه 01 خرداد 1387, 14:52 عصر
بهروز خان این کد تو FireFox کار میکنه ؟ من تست کردم جواب نداد!
من قبلا از این کد استفاده می کردم :


Response.Cache.SetCacheability(HttpCacheability.No Cache);

اینم فقط تو IE کار میکنه .

ممنون...

yaqubian
چهارشنبه 01 خرداد 1387, 15:41 عصر
Response.Cache.SetExpires(Now.Date.AddDays(-1))

Hossein Bazyan
جمعه 03 خرداد 1387, 21:54 عصر
سلام
برای من هیچ کدوم از کدها کار نمیکنند.