PDA

View Full Version : مشکل با دکمه back مرورگر



maryam4
دوشنبه 05 اسفند 1387, 23:06 عصر
با سلام
من برای security سایتم از کنترل های لوگین خود asp.net استفاده می کنم ولی مشکلم اینه که هنگامی که sign out می شم (توسط کنترل login status ) ، اگر دوباره دکمه back مرورگر رو بزنم دوباره به صفحات admin وارد می شم بدون اینکه از من رمز عبور و پسورد رو بخواد
حالا چطور می تونم دکمه back مرورگر رو غیر فعال کنم و یا اینکه history رو پاک کنم که این مشکل برطرف بشه
اگه راه حل دیگه ای هم به نظرتون می رسه ممنون میشم
با تشکر

mh19842008
سه شنبه 06 اسفند 1387, 09:30 صبح
میتونی از این استفاده کنی

<script>
history.forward();
</script>

milade
سه شنبه 06 اسفند 1387, 09:38 صبح
سلام
این کد رو در متد لود صفحه بنویس :

Response.CacheControl = "no-cache"
Response.AddHeader("Pragma", "no-cache")
Response.Expires = -1
با این کار مرورگر دیگه صفحه رو کش نمیکنه .
موفق باشید

maryam4
سه شنبه 06 اسفند 1387, 14:41 عصر
کاربر milade با تشکر از شما من کدتون رو توی رویداد لود مسترپیج ام قرار می دم ولی باز هم دکمه های back وforward مرورگرم فعالند
راستی اگر من کش رو غیر فعال کنم از نظر سرعت بارگذاری به ضررم نیست
راهی وجود داره که من هنگامی که signout می کنم اگر دکمه back رو زدم مثل یاهو دوباره از من یوزر و پس بپرسه
کاربر mh19842008 اسکرپتی رو که نوشتید کارش چیه و کجا اون رو قرار بدم و چطور فراخوانی اش کنم

milade
سه شنبه 06 اسفند 1387, 14:48 عصر
سلام
کد من قرار نیست چیزی رو غیر فعال کنه که !!!!!!!!
این کد میاد کش رو از مرورگر بر میداره ، در نتیجه وقتی کاربر Back رو زد ، دوباره از سرور خونده میشه و در نتیجه تموم !
امتحان کنید و بک رو بزنید ، نتیجه رو اعلام کنید
موفق باشید

RoostaYeBekr
سه شنبه 06 اسفند 1387, 15:11 عصر
سلام
این کد رو در متد لود صفحه بنویس :

Response.CacheControl = "no-cache"
Response.AddHeader("Pragma", "no-cache")
Response.Expires = -1
با این کار مرورگر دیگه صفحه رو کش نمیکنه .
موفق باشید

با سلام
وقتی که لاگین می کنیم و بعد به صفحات بعدی وارد می شویم ، در صفحات بعدی ، اجازه ی ورود به لینک های مختلف و کارهای مختلف که بر اساس TextBox ی که کاربر ، توش username وارد کرده ، که انجام نمی شود. بلکه در همان صفحه ی لاگین ، به محض اینکه کاربر ، دکمه ی ورود را می زند ، مقدار username مثلا توی Session ی ، چیزی ( منظورم فقط session نیست ، بلکه هر چیزی است که بتواند مقدار username را نگه دارد است ) ریخته می شود. از آنجا به بعد هم با این TextBox ها کاری نداریم که مهم باشد Cache بشود یا نشود. موضوع Cache اینجا نباید مطرح شود . چون اصلا سروکارمان با چیزهایی امثال Session است. به دلیل زیر :
مثلا برنامه ای که فرستادم را ببینید ، همچنان Session["username"] بعد از رفتن به صفحه ی بعد و بعد زدن Back برقرار است. دیدید از Cache هم ، هیچکاری برنیامد . چون وظیفه ی Cache نبود که این مشکل را حل کند و کاربردش جای دیگری است.
به نظرم این راهنمائی که شما کردید ، حداقل در موضوع این تاپیک کاربرد ندارد. البته بهتر است بگم که خود سوالی که در این تاپیک بیان شده ، به خاطر موضوعی که در این تاپیک مطرح شده ، ذهن را گمراه می کند.

من فکر می کنم ، راه اینکه جلوی انجام کارهای مختلف ، بعد از sign out را بگیریم ، غیرفعال کردن دکمه ی Back نیست. بلکه چک کردن کارهای دیگر است ( مثلا Session["username"] را null کنیم . یعنی زمانیکه sign out صورت می گیرد ، Session["username"] را null کنیم و بعدا هم هر عملی که می خواهد صورت گیرد ، اولش چک شود که این null نشده باشد.)

milade
سه شنبه 06 اسفند 1387, 15:31 عصر
سلام
در مورد صحبتاتون باید بگم مصل اینکه پست شماره 1 رو با دقت دنبال نکردید !
دوست ما از سشن استفاده نمیکنه ( هر چند بازم صدق میکنه و راه دیگه داره) و داره از کنترلهای اماده استفاده میکنه در نتیجه وقتی ایشون Sign Out میکنن یه کش روی مرورگر هست که چون از سرور خونده نشده و وقتی Back میزنن اون کش هست نه صفحه فعلی واقی ( برای اثبات وقتی Back رو میزنن میتونن Refresh کنن تا اگه تدابیر اندیشیده باشه به لاگین برن ) . اما این کد بنده کش رو بر میداره و کار حله ( برای خودم که حل شد )

موفق باشید

RoostaYeBekr
سه شنبه 06 اسفند 1387, 18:15 عصر
سلام
لطفا" در اینجا مطالبتون رو رنگی نکنید لطفا" ! ( در یه زمان چند تا تاپیک رو نگاه میکنم ، چمم اذیت میشه ! ) Tnx ( هر چند هدف کلی رو نمیدونم چیه از این رنگی کردن !)
در مورد صحبتاتون باید بگم مصل اینکه پست شماره 1 رو با دقت دنبال نکردید !
دوست ما از سشن استفاده نمیکنه ( هر چند بازم صدق میکنه و راه دیگه داره) و داره از کنترلهای اماده استفاده میکنه در نتیجه وقتی ایشون Sign Out میکنن یه کش روی مرورگر هست که چون از سرور خونده نشده و وقتی Back میزنن اون کش هست نه صفحه فعلی واقی ( برای اثبات وقتی Back رو میزنن میتونن Refresh کنن تا اگه تدابیر اندیشیده باشه به لاگین برن ) . اما این کد بنده کش رو بر میداره و کار حله ( برای خودم که حل شد )
خوب دوست عزیزمون تست میکنن ، پاسخ میدن اما شما به خاطر داشته باشید که وقتی میخواید از یکی انتقاد کنید دلایل کافی باشه )
(وقت دعوا ندارم )
موفق باشید
سلام
ببین خدائیش یک بار همین پستتون رو با پست من مقایسه کن . لحن کدوممون تنده ؟ راستش من اصلا نفهمیدم شما چرا ناراحت شدی؟:متفکر:

اولا که من از همون پست قبلیتون یک کد یاد گرفتم که قبلا بلد نبودم.
ولی وقتی که کدتون رو امتحان کردم ، دیدم که جواب این تاپیک نیست . چون همانطور که قبلا گفتم ، موضوع تاپیک نسبت به سوالی که در همین تاپیک مطرح شده ، کمی گمراه کننده است.

ثانیا شما حداقل این برنامه ی ما رو دانلود می کردی ، بعد نظرتون رو می گفتین. الان که نگاه می کنم ، می بینم که نوشته : 0 دانلود.

ضمنا بنده چند بار در پست قبلیم تاکید کردم که منظورم صرفا session نیست . بلکه هر چیزی است که مقدار این username را ذخیره کند.شما می گوئید که ایشان از کنترل های آماده استفاده می کنند ، خوب بکنند. در هر صورت که باید این مقدار username یک جا ذخیره شود. و اینکه می گوئید برای انتقاد دلایل کافی داشته باشید. باز هم می گم : تا زمانی که برنامه رو دانلود نکردید ، متاسفانه نمی تونم حرفتون رو بپذیرم.

maryam4
چهارشنبه 07 اسفند 1387, 08:46 صبح
سلام و تشکر مشکلم برطرف شد
هنگامی که برای پوشه admin مجوز دسترسی تعریف می کنم و همنطور کش رو غیر فعال می کنم هنگامی که دکمه back رو می زنم باز هم دوباره از من یوزر و پس می پرسه
باز هم تشکر

RoostaYeBekr
چهارشنبه 07 اسفند 1387, 12:14 عصر
سلام و تشکر مشکلم برطرف شد
هنگامی که برای پوشه admin مجوز دسترسی تعریف می کنم و همنطور کش رو غیر فعال می کنم هنگامی که دکمه back رو می زنم باز هم دوباره از من یوزر و پس می پرسه
باز هم تشکر
سلام
یک برنامه ی کوچیک از این چیزی که می گید ، تو این تاپیک می گذارید ؟

mh19842008
چهارشنبه 07 اسفند 1387, 17:04 عصر
کاربر mh19842008 اسکرپتی رو که نوشتید کارش چیه و کجا اون رو قرار بدم و چطور فراخوانی اش کنم
سلام
خوشحالم که مشکلتون حل شد
من هم از راهی که milade گفت استفاده میکنم به همراه این کد
این کد رو میتونی در صفحه ای که قرار نیست back بهش صورت بگیره بین دو تگ <head>
فقط عملکرد دکمه رو تحت تاثیر قرار میده وصفحه رو به جلو بجای برگشت هدایت میکنه

maryam4
پنج شنبه 08 اسفند 1387, 11:21 صبح
سلام
کاربر rostayebekr از من خواسته بودید که یک برنامه نمونه براتون قرار بدم. چون برنامه نمونه دارای کنترل های لوگینه و بنابراین حتما باید شامل پایگاه داده ASPNETDB به حجم 10 مگا بایت باشه ناگزیرم فقط روند کار رو براتون تئوری بگم
توضیح اینکه من تمام صفحات مربوط به مدیر سایت رو داخل پوشه ای بنام admin قرار میدم و سپس برای این پوشه مجوز دسترسی تعریف میکنم بدین صورت که برای اون پوشه یک فایل web.config درست می کنم و داخل اون این کد ها رو قرار میدم

<authorization>
<allow roles="admin" />
<deny users="*" />
<deny users="?" />
</authorization>
این کار رو می تونید بوسیله ASP.NET Configuration به صورت ویزاردی هم انجام دهید.
حالا وقتی کش رو از رو صفحات برمیدارم چون هنگام زدن دکمه back ،اطلاعات دوباره از روی سرور خونده میشه دوباره از من یوزر پس می پرسه
موفق باشید

RoostaYeBekr
پنج شنبه 08 اسفند 1387, 19:50 عصر
سلام
خوشحالم که مشکلتون حل شد
من هم از راهی که milade گفت استفاده میکنم به همراه این کد
این کد رو میتونی در صفحه ای که قرار نیست back بهش صورت بگیره بین دو تگ <head>
فقط عملکرد دکمه رو تحت تاثیر قرار میده وصفحه رو به جلو بجای برگشت هدایت میکنه
سلام
به نظر من اصلا نباید از اسکریپت ها ، به منظور امنیت استفاده کرد. چون به سادگی با از کارانداختن امکان اسکریپت مربوط به مرورگر ، دیگر هیچ اسکریپتی کار نمی کند.

mh19842008
جمعه 09 اسفند 1387, 11:45 صبح
البته اگه جاوا رو غیر فعال کنند کد سمت کاربر کار نمی کند اگه دقت کرده باشی گفتم به همرا این کد یعنی من از هر دو استفاده کردم .
موفق باشید