PDA

نسخه کامل مشاهده نسخه کامل : مشکلاتي با تشخيص هويت



بهاره فيضي
22-11-2012, 10:32
سلام.
من از تشخيص هويت پيشرفته اي که در لينک زير
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
توسط استاد دلشاد آموزش داده شده براي سايتم استفاده کردم.

منتها الآن به من يه مشکلي گوشزد شده که وقتي خود فايل ضميمه آخر مقاله رو هم چک کردم ديدم اونجا هم اين مشکل وجود داره.

مسئله اينه فرضاً يه کاربر با اسم کاربري a وارد ميشه بدون اينکه خروج رو بزنه يه نام کاربري ديگه رو در لوگين وارد ميکنه و مي تونه وارد بشه به من گفتن نبايد اين اتفاق بيفته.
در واقع من مي خوام اگه کاربر هنوز خارج نشده بود و خواست با يه نام کاربري ديگه لوگين کنه بهش پيغام بده که ابتدا خارج شويد و سپس با نام کاربري جديد لوگين کنيد.

ممنون ميشم راهنمايي کنيد چطور ميشه اين مشکل رو حل کرد؟
يه مسئله ديگه اينه که وقتي کاربر خروج رو زد و دکمه back براوزر رو مي زنه نمي دونم چرا وقتي بار اول بک مي زنه اون رو به عنوان کاربر ميهمان تشخيص مي ده ولي بار دوم با نام کاربريش بهش خوش آمد ميگه که اينم لطف کنيد بگيد چه کار کنم تا اين اتفاق نيفته؟

واقعاً ديگه موندم چيکار کنم. رفتم با کنترلهاي آماده خود Asp.net امتحان کردم ديدم هر دو مشکل چه مشکل Back براوزر و چه ورود يه فرد با نام کاربري جديد در حالي که خروج رو نزده و صفحه رو نبسته اونجا هم وجود داره.

چرا پس اين ايراد رو از کار من گرفتن؟

خوب حالا چي کار ميشه کرد؟


لطفاً راهنمايي کنيد.

_H2_
22-11-2012, 17:48
سلام

در واقع من مي خوام اگه کاربر هنوز خارج نشده بود و خواست با يه نام کاربري ديگه لوگين کنه بهش پيغام بده که ابتدا خارج شويد
لینک را دیدم، یک آموزش با کدهای ساده آموزشی است، قرار نیست شما همینطوری از این کدها استفاده کنید...
در واقع روش صحیح آن است که مطالب و کدها ادراک شود و در جهت آموزش استفاده شود...
این در واقع نوعی سرنخ است، شما باید پیگیری اش کنید و پس از خواندن مقالات بیشتر و جمع آوری اطلاعات از تجمیع نتیجه آموزشی خودتان کدی برای خودتان بنویسید

اگر این روند درک به انجام میرسید آنگاه اضافه کردن یک IF جدید در صفحه لوگین جهت عدم ورود یا رویت کاربران قبلاً وارد شده کار سختی نبود.
مثلاً کافی است یک If در Page_Load فرم login اضافه کنید تا کاربرانی که لوگین کرده اند را به صفحه دیگر (مثلاً صفحه اول سایت) Redirect کنید، کاملاً مشابه (و شاید از نقطه نظر برعکس) زمانی که کاربری که لوگین نکرده نمیتواند یک صفحه خاص را مشاهده کند.


... وقتي کاربر خروج رو زد و دکمه back براوزر رو مي زنه ...
این مسئله معمولاً بدلیل کش داخلی مروگر است، که بعضاً شامل کش صفحه (و عدم درخواست مجدد) و یا کش هدر HTTP میشود
کدی مانند این در صفحه MaterPageLoad کش صفحه را غیر فعال خواهد کرد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

موفق باشید.

بهاره فيضي
22-11-2012, 20:40
خيلي جالبه من در سايت asp.net هم اين سوال رو پرسيده بودم و جوابي که بهم داده شد فکر مي کنم همون جواب شما هست
Place your authenticated status checking at the login form and redirect user to the default landing page if authenticated.
ولي من چون صفحه لوگين مجزا ندارم و يه MasterPage دارم که کنترل لوگين که به صورت يوزرکنترل درست کردم در اون انداخته شده
و صفحه default من همون صفحه لوگين هستش فکر کردم اين راه حل در اينجا صدق نمي کنه آيا به نظرتون بازم اين راهکار شما جواب ميده. نمي دونم شايد من قضيه رو خيلي پيچيده کردم براي خودم.

.................................

اومدم کدهاي زير رو در رويداد کليک دکمه لوگين نوشتم

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و در صفحه Default4 يک پيغام که براي لوگين مجدد بايد خارج شويد و يک دکمه خروج گذاشتم مشکل حل شد.
ممنونم هم از راهنماييتون هم از تلنگري که بهم زدين.

بهاره فيضي
23-11-2012, 16:15
سلام.
از لينک زير استفاده کردم و بدون غيرفعال کردن کش اين کار رو انجام دادم
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
در آخر اين لينک ظاهراً همون کدهايي که شما گفتيد رو گذاشته ولي خوب من چون نمي خواستم کش غيرفعال بشه از اون روش استفاده نکردم. گرچه هنوز از اين روشي هم که استفاده کردم 100% راضي نيستم ولي خيلي جستجو کردم نتونستم نتيجه بهتري بگيرم.
ممنونم.

_H2_
23-11-2012, 20:12
سلام
گمانم پس چیزی برای پاسخ دادن نمانده ...

ولي من چون صفحه لوگين مجزا ندارم و يه MasterPage دارم که کنترل لوگين که به صورت يوزرکنترل درست کردم در اون انداخته شده
اگر پنلی برای لوگین شدن در Master دارید خود میتوانید پس از لوگین کردن کاربر پنل را مخفی و پنل دیگری مختص عضویت همان کاربر نشان دهید ...

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