مشکل آپدیت نشدن session در صورت تغییر اطلاعات کاربر

پرسیده شده
فعالیت 1397 روز پیش
دیده شده 492 بار
2

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

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

 

فایل پیوست

1
حذف شده

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

فایل پیوست

محسن محمدی رهنما

توسط

محسن محمدی رهنما

20 تیر 99

حذف شده
سلام مجدد محسن جان خیلی ممنون از راهنمایی حتما روشی که گفتی رو امتحان میکنم - روشی که گفتم اصلا بهینه نبود خیلی درخواست باید به سرور زده بشه
حذف شده
سلام محمد علی جان سلامت باشی . امیدوارم تونسته باشم کمکت کنم دوست خوبم.
0
حذف شده

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

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

 

فایل پیوست

محسن محمدی رهنما

توسط

محسن محمدی رهنما

15 تیر 99

حذف شده
سلام محسن جان منظورم این بود که مثلا اگه یه یوزری که آنلاینه همون لحظه توسط ادمین ادیت بشه و logout هم نزده باشه میخوام همون لحظه اطلاعاتی که داخل دیتابیس به روز شدن داخل session هم آپدیت بشه فکر کنم باید داخل session فقط id یوزر رو ذخیره کنم و در داخل middleware ادمین هربار اطلاعات یوزر رو از دیتابیس بخونم
حذف شده
مشکلی در logout ندارم و فقط خواستم کاری کنم که ادمین به راحتی بتونه دسترسی هر یوزری رو هرچند که session ثبت شده باشه رو ببنده و بتونه کنترلش کنه