محمد
5 سال پیش توسط محمد مطرح شد
3 پاسخ

session timeout

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


ثبت پرسش جدید
سید محمد حسین موسوی
تخصص : FullStack Developer
@SeyedMH.Mosavi 5 سال پیش مطرح شد
1

سلام
اول اینکه چرا باید یه همچین کاری بکنی!؟
دوم اینکه وقتی مدت زمان انقضای session شما مثلا 10 دقیقه باشه وقتی کاربر یه درخواست به سمت سرور ارسال کنه خود به خود تمدید می شه و دیگه نیازی نیست که سوالی بپرسی و کاربر جوابی بده. بعد حس نمی کنی باعث اذیت کاربر بشه؟ مثلا فرض کن هر ده دقیقه یه پیغام بیاد که هنوز هستی؟ کاربر گرامی کجا رفتی داری منو نگاه می کنی، اگه راست می ** این دکمه رو بزن :)
سوم اینکه اگر فکر می کنی 10 دقیقه کمه می تونی زمان انقضای session رو بیشتر کنی.
چهارم اینکه ان شاءالله در پروژه های بعدی سعی کن به جای مدیریت این مسائل با session بری سراغ استفاده از توکن و رفرش توکن


محمد
تخصص : react js
@mohamadmokhtari1414 5 سال پیش مطرح شد
1

چون سایت من طوری هست که یوزر ممکنه تو یه صفحه حتی 1 ساعت بمونه و برخی چک ها رو با تلفن انجام بده روی همون صفحه .
من از توکن هم که استفاده کنم مگر زمان انقضا نداره . این بود که من تصمیم گرفتم 2 دقیقه قبل از اتمام زمان یه modal بیارم بپرسم از یوزر آیا میخواید ادامه دهید و اگر آره زمانشو تمدید کنم .
از نظر امنیتی هم نمیتونم زمان انقضا رو خیلی زیاد بگیرم . حداکثر 20 دقیقه .
@SeyedMH.Mosavi


سید محمد حسین موسوی
تخصص : FullStack Developer
@SeyedMH.Mosavi 5 سال پیش مطرح شد
1

توکن زمان انقضا داره ولی یه مفهومی داریم به اسم refresh token
بطور کلی بخوام بگم اینه که اگر کاربر شما معتبر باشه ولی درخواستی که ارسال می کنه توکنش تاریخ انقضاش تموم شده باشه، می تونی یه توکن دیگه بهش بدی. مثل زمانی که اولین بار بهش توکن دادی.
برای اینکه متوجه بشی که به کاربر می تونی یه توکن دیگه بدی یه جدول باید داشته باشی که مقادیر توکن و همینطور یه مقدار دیگه با هر اسمی مثل GUID ای که هش شده رو نگه داری. همون داستان Key و Value
حالا اینجا کاربر هم توکن رو داره و هم مقدار مورد نظر رو. هر بار که درخواست می ده اول شما بررسی می کنی که توکن داره یا نه. اگر داشت و معتبر بود که هیچ اگر داشت ولی تاریخ انقضاش تموم شده بود می تونی مقدار دوم رو هم بگیری و بری تو جدول مورد نظرت ببینی که این کاربر مقدار توکن و مقدار دومش تو این جدول وجود داره؟ اگر داشت و برابر بود، یه توکن جدید براش صادر کنی و این جدول رو هم بروزرسانی کنی.
از طرفی کاربرهایی که logout می کنند رو هم می تونی مقدارشون رو از این جدول حذف کنی. اینطوری می تونی متوجه بشی که همزمان چه تعداد کاربر داری که فعال هستند و دارند کار می کنند. مقادیر بیشتری هم می تونی کنترل کنی و تو این جدول نگه داری اگر برات مهمه. مثلا وقتی یه توکن برای کسی صادر می شه تاریخش رو هم یاداشت کنی تا متوجه بشی اخرین بار کی انلاین شده و کار کرده و همینطور تعداد رو هم می تونی ذخیره کنی که چه تعداد براش توکن صادر شده و خیلی موارد کنترلی دیگه که می تونی ازش استفاده کنی.

این نحوه پیاده سازی دستی رفرش توکنه که احتمالا کتابخونه ای باشه که بخواد اینکارها رو برای شما بهتر و امن تر انجام بده فقط باید دنبال مفهوم refresh token باشی.

از طرفی وقتی شما می ** که کاربر داره با گوشیش همه کارش رو می کنه چه مشکل امنیتی می تونه پیش بیاد؟!!
زمانی از سشن استفاده می شه و محدودیت زمانی به عنوان یه پارامتر امنیتی مطرح می شه که طرف پشت سیستم نشسته و بلند می شه و می ره مثلا تو کافی نت یا هر کامپیوتر عمومی دیگه لاگین می کنه و این موضوع تاریخ انقضا مطرح می شه وگرنه گوشی که برای خود طرفه و این مشکلات عموما نباید پیش بیاد.
از طرفی شما اگر بقیه برنامه ها رو هم دقت کنی معمولا یه زمان طولانی رو برای توکن در نظر می گیرند مگر برنامه هایی مثل بانک و ...
حتی اگر برنامه شما از این قبیل باشه و حساس باشه می تونی موقع انجام عملیات مهم ازش تاییده بگیری. مثلا رمز عبور یا ... رو ازش بپرسی که مطمئن بشی این همون کاربره


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام