x
1 سال پیش توسط x مطرح شد
10 پاسخ

غیرفعال کردن اکانت کاربران

سلام خسته نباشید
من بک اند رو با node js و فرانت react js دارم
سیستم لاگینی رو دارم که هم ادمین و هم یوزر میتونن از اون وارد حساب خودشون بشن
و الان میخوام این قابلیت رو بهش اضافه کنم که چه کاربری حق ورود رو داشته باشه و چه کاربری نتونه واردشه یعنی اکانت کاربر کلا غیرفعال شه تا زمانی که ادمین دوباره فعالش کنه

میتونید راهنماییم کنید بتونم این کارو انجام بدم؟


ثبت پرسش جدید
میکائیل
تخصص : برنامه نویسی سمت سرور و کلاینت
@FullStack 1 سال پیش آپدیت شد
1

ببینید میشه همچین کاریو کرد بستگی داره بخوای چیکار کنی اگه میخوای فقط هروقت خودت دلت بخواد یوزر ها بتونن وارد وارد بشن میشه این کارو کرد اما اگه میخوای مثلا یوزر رو دفعه اول بن کنی مثلا یک روز بن بشه دفعه دوم 3 روز دفعه 3 سوم 1 ماه و مثلا دفعه بعدی دائمی بن بشه این دیگه جدول ادمین رو الکی شلوغ میکنه و باید براش جدول جداگونه بزنی ولی برای اولی که فقط یه گزینه true و false بشه که خودت بگی کی بتونه وارد بشه اره تو جدول یوزر هم میشه پیادش کرد ولی واسه این میگم یه جدول جدا بزن شاید در آینده تصمیم بگیری این سیستم بلاکینگ رو گسشترش بدی و حرفه ای ترش کنی بعد دیگه مجبور میشی روش دومی رو جلو ببری چون روش دومی قابل انعطاق تره و هرچی بخوای میتونی بهش اضافه کنی و تیبل اصلی یوزر هارو شلوغ نمیکنه چون کلا این تیبل برای این کار طراحی شده ولی اگه قرار نباشه که دیگه گشسترش بدی نیاز نیست


میکائیل
تخصص : برنامه نویسی سمت سرور و کلاینت
@FullStack 1 سال پیش مطرح شد
1

سلام وقت بخیر
این کار خیلی خیلی ساده هست یه جدول به دیتابیس میتونید اضافه کنید به اسم مثلا user_block ایدی یوزر و حالا اگه میخوای دستی فعال کنی که میتونی یه enum بهش بدی که true و false بگیره اگه True بود کاربر بتونه وارد بشه اگه نه که نتونه یا اگه میخوای به صورت زمان باشه یه ستر بهش اضافه میکنی حالا مثلا به هر اسمی و تاریخ رو میگیری و یه مدت زمانی به تاریخ اضافه میکنی و توی اونجا ذخیره میکنی و موقعه ورود چک میکنی اگه اون تاریخ که بهش اضافه کردی بزرگ تر یا مساوی تاریخ الان هست یا نه اگه بود کاربر بتونه وارد بشه اگه نه بگه اکانت شما هنوز بلاک هست کلا سناریشوش به این شکله یه جدول دیگه باشه و موقعه ورود هی این جدول چک بشه که کاربر توی لیست هست یا نه


x
تخصص : هیچولوژیست
@SZaaaa1111 1 سال پیش مطرح شد
0

@FullStack

خیلی ممنونم از شما❤️
سعی میکنم که با این روش بتونم درستش کنم...


x
تخصص : هیچولوژیست
@SZaaaa1111 1 سال پیش آپدیت شد
0

@FullStack
ببخشید من کمی گیر کردم رو این موضوع

اگر به user یه فیلد لیمیت اضافه کنیم و ارزش دیفالتش رو true بزاریم
و با false بودن اجازه ورود نداشته باشه چطوره؟
اینکار از نظر امنیتی درسته یا اینکه حتما باید آیدی یوزر تو یه کالکشن جدا ذخیره شه؟

اگه امکانش هست یک مثال کوچک بنویسید یا منبعی معرفی کنید ممنونتون میشم❤️


میکائیل
تخصص : برنامه نویسی سمت سرور و کلاینت
@FullStack 1 سال پیش آپدیت شد
1

ببینید میشه همچین کاریو کرد بستگی داره بخوای چیکار کنی اگه میخوای فقط هروقت خودت دلت بخواد یوزر ها بتونن وارد وارد بشن میشه این کارو کرد اما اگه میخوای مثلا یوزر رو دفعه اول بن کنی مثلا یک روز بن بشه دفعه دوم 3 روز دفعه 3 سوم 1 ماه و مثلا دفعه بعدی دائمی بن بشه این دیگه جدول ادمین رو الکی شلوغ میکنه و باید براش جدول جداگونه بزنی ولی برای اولی که فقط یه گزینه true و false بشه که خودت بگی کی بتونه وارد بشه اره تو جدول یوزر هم میشه پیادش کرد ولی واسه این میگم یه جدول جدا بزن شاید در آینده تصمیم بگیری این سیستم بلاکینگ رو گسشترش بدی و حرفه ای ترش کنی بعد دیگه مجبور میشی روش دومی رو جلو ببری چون روش دومی قابل انعطاق تره و هرچی بخوای میتونی بهش اضافه کنی و تیبل اصلی یوزر هارو شلوغ نمیکنه چون کلا این تیبل برای این کار طراحی شده ولی اگه قرار نباشه که دیگه گشسترش بدی نیاز نیست


x
تخصص : هیچولوژیست
@SZaaaa1111 1 سال پیش آپدیت شد
1

@FullStack
خیلی ممنونم که وقت گذاشتی
من با این روش پیش رفتم و الان یه سوالی برای من پیش اومده
زمانی که کاربر لاگین شده من اگه دسترسی رو ازش بگیرم تا زمانی که خارج نشه همچنان میتونه استفاده کنه
الان میخوام وقتی دسترسی ازش گرفته شد بطور خودکار خارج شه از اکانتش
راهی هست بتونم اینکارو انجام بدم؟


میکائیل
تخصص : برنامه نویسی سمت سرور و کلاینت
@FullStack 1 سال پیش آپدیت شد
1

بله اگه میخواید به صورت real time باشه یعنی از پنل به محض اینکه بلاک شد مثل اپلیکیشن های چت باید از socket.io استفاده کنید و یک listener همیشه گوش بده تا به سمتش emit بشه و وقتی دریافت کرد logout کنه خوب این کار به صورت ریل تایم انجام میشه و درجا کاربر مد نظر بیرون انداخته میشه چون با node js کار میکنی اینو گفتم چون socket.io برای node js هست خیلی پس راحته اگه باهاش کار کنی اما اگه نه میخوای مثلا وقتی توی صفحات رفت بندازه بیرون از سایت باید یه middleware تعریف کنی و توی روت هات از middlware استفاده کنی توی میدلور چک کنی که اگه مقدار isBlock یوزر مثلا true بود بیاد بندازه بیرون چون من تخصصم php و laravel هست واسه همین دارم اینجوری میگم به فرض اینکه خودت node js کار کردی و بلدی میدونی منظورم چیه حالا اگه متوجه نشدی خواستی بگو یه تست برات میفرستم از کدش حالا middleware یا جای دیگه مشکلی داشتی راهنماییت کنم ولی کلیت کارش که بندازه بیرون همینه امید وارم متوجه شده باشی منظورم چیه😂


x
تخصص : هیچولوژیست
@SZaaaa1111 1 سال پیش مطرح شد
0

@FullStack
من تو این پروژه ای که دارم روش کار میکنم از socket.io هم استفاده کردم
نمیدونم چرا برای من socket کمی مشکل داره یعنی بعضی وقتا اصلا دسترسیش قطع میشه و...
بنظر شما اینجا بهتره کدوم روشو انتخاب کنم با socket اینکارو انجام بدم یا اینکه یه میدل ور بنویسم بهتره؟


میکائیل
تخصص : برنامه نویسی سمت سرور و کلاینت
@FullStack 1 سال پیش مطرح شد
1

100 درصد سوکت بهتره چون خیلی ساده تره و سریع تر و اینکه به لحظه کاربر رو میندازه بیرون


x
تخصص : هیچولوژیست
@SZaaaa1111 1 سال پیش مطرح شد
1

@FullStack
خیلی متشکرم که وقت گذاشتید❤️


میکائیل
تخصص : برنامه نویسی سمت سرور و کلاینت
@FullStack 1 سال پیش مطرح شد
1

خواهش میکنم 😘


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

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