💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۱۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ Ali Naseri
مشکل آپدیت نشدن session در صورت تغییر اطلاعات کاربر
محسن محمدی رهنما حل شده توسط محسن محمدی رهنما

سلام استاد یه مشکلی که بنده با session داشتم این بود که مثلا اگه پس از لاگین ، نقش کاربر رو از داخل دیتابیس تغییر بدیم هنوز کاربر میتونه وارد پنل بشه چون داخل session هنوز نقش اون ادمینه .

این مشکلی برای سایت ایجاد نمیکنه؟ چطور میتونم به بهترین روش این مشکل رو رفع کنم ؟ باید در auth middleware هر دفعه اطلاعات کاربر رو از دیتابیس بخونم؟

 

سلام محمد علی جان وقتت بخیر , اول اینکه عذر میخوام هم از شما و هم از جناب علیمحمدی که من دارم پاسخ میدم . ببین محمد علی جان شما وقتی role کاربر رو UPDATE میکنی مسلما برای اینکه با اون کاربری که UPDATE کردی وارد بشی اول باید logout کنی و بعد با ایمیل و پسورد اون کاربر login بشی . حالا سوالی که دارم ازت اینه شما توی کدهای logout ت آیا session رو destroy  میکنی و Clear cache میکنی؟ اگه این کار رو نکنی مسلما اتفاقی نمیوفته چون اطلاعات session همون اطلاعات قبل UPDATE هست. و وقتی که login میکنی حالا sessionت براساس اطلاعات بروز شده , ایجاد میشه.

اگر هم باز جایی از حرفام برات مبهم بود بگو تا بیشتر توضیح بدم. موفق باشی دوست من

 

محسن محمدی رهنما ۱۵ تیر ۱۳۹۹، ۰۶:۲۳

سلام محمد علی جان وقتت بخیر . متوجه شدم چی میخوای . ببین راه حلی که گفتی خوبه ولی یه مشکلی هست با این روش هر سری با یه request بره سمت سرور که چک کنه آیا این کاربر تغییر کرده یا نه و این یه بار اضافی روی سرور هست به نظرم. حالا تازه سایتت ممکنه چند صد تا کاربر داشته باشه که آنلاینن , تو حساب کن اونطوری چه ترافیکی از request‌ها سمت سرورت به وجود میاد . به نظرم اینطوری سرورت رو نابود نکن . اگه نظر من رو بخوای تو که میخوای هرسری چک کنی آیا کاربر ویرایش شده یا نه بیا  از JWT استفاده کن و اینطوری هم بار اضافی روی سرورت نیست . توی این روش میتونی حرکتی بزنی وقتی یه کاربر توی سایتت ثبت نام میکنه , یه token براش ساخته میشه (همه این موارد سمت client هست و هیچی سمت سرور ذخیره نمیشه) وقتی کاربر توی سایتت لاگین شد  سرور token کاربر رو با کلیدی که خودش داره تطابق میده اگه مشکلی نداشت لاگین میشه و کلا کاربر هر کاری بخواد بکنه سرور تنها کاری که باید بکنه اینه که token کاربر رو با کلیدی که خودش داره تطابق بده اینطوری فشاری هم سمت سرور نیست و اگه خواست به عنوان مدیر کاربری رو هم ویرایش کنی بتونی راحت این قضیه رو مدیریت کنی (منظورم اینه که کاربر رو پرت کنی بیرون و دوباره لاگین کنه و یا بکارش ادامه بده) . سعی کردم تا حد امکان از اصطلاحات کمتر استفاده کنم تا بهتر منظورم رو متوجه بشی .   

بهترین پاسخ
محسن محمدی رهنما ۲۰ تیر ۱۳۹۹، ۱۳:۵۶