سلام دوستان . یک پروژه دارم که هر کاربر میتونه توی اون محصولات مورد نیاز خودش رو که فیلم هستن رو خریداری کنه و از طریق پنل کاربری فیلم ها رو مشاهده کنه. اما اخیرا مشاهده شده که بعضی از کاربرها با یک اکانت وارد میشن و همه از یک اکانت استفاده میکنن. جهت جلوگیری از ورود همزمان (لاگین) چند کاربر با یک نام کاربری در Asp.net Core چه راهکارهایی هست ؟
به صورت پیش فرض توی Asp.net core و Identity هنوز که این پاسخ رو برای شما مینویسم امکانی برای این موضوع فراهم نشده. بنابراین اگر شما میخواهید این کار رو انجام بدید باید به فکر روش خاصی برای انجام این کار باشید. اما خب چند تا راه حل برای این کار وجود داره.
کنترل ورود کاربر با استفاده از فیلد کنترلی در دیتابیس
خب یکی از راه حل هایی که خیلیها به فکرشون میرسه این هست که یک فیلد در دیتابیس ایجاد کنیم و هر موقع کاربر لاگین میکنه مثلا مقدارش رو true کنیم. در این حالت اگر کاربر دیگه ای خواست با همین نام کاربری وارد بشه دیگه نمیتونه چون فیلد مورد نظر ما true هست. هنگامی هم که کاربر Log out میکنه مقدار این فیلد رو میتونیم false کنیم.
معایب این روش
در نگاه اول همه چیز خوب هست ولی یک عیب بزرگی این روش داره و اونم این هست که شما فرض کنید کاربر وارد سیستم شد ولی برای خروج روی دکمه Log out کلیک نکرد و یا بعد از اینکه کارشو انجام داد مستقیم مرورگر رو بست . خب در این حالت فیلد کنترلی به صورت true باقی می مونه و خود کاربر اصلی هم دیگه بعدا نمیتونه وارد سیستم بشه. بنابراین این روش غیرقابل استفاده است.
تغییر Security Stamp هنگام ورود کاربر
اگر از Identity استفاده می کنید پس مطمئنا با Security Stamp آشنا هستید. یکی از فیلدهایی که در جدول AspNetUsers برای احراز هویت کاربر استفاده میشه همین فیلد هست. شما میتونید هر بار کاربر لاگین میکنه یکبار Security Stamp رو آپدیت کنید و مقدار جدید رو هم در کوکی ذخیره کنید. این روش هم اشکالاتی داره که برای کسب اطلاعات بیشتر و نحوه پیاده سازی میتونید لینک زیر رو مطالعه کنید.
استفاده از پیامک اعتبارسنجی (OTP)
روشهای بالا همگی مشکلاتی دارن و اشکالات زیادی رو ممکنه برای شما به وجود بیارن. روشی که امروزه خیلی استفاده میشه و تقریبا خیلی از بانکها هم از همین روش استفاده میکنن (مثل اینترنت بانک ملت) استفاده از روش پیامک اعتبارسنجی هست. در این روش شما باید شماره تماس کاربرانتون رو داشته باشید. هر موقع کاربر خواست وارد سیستم بشه نام کاربری و رمز عبورشو وارد میکنه و یک پیامک براش ارسال میشه که فقط توسط اون پیامک میتونه وارد سیستم بشه. خب در این روش دیگه کاربران نمیتونن با یک اکانت وارد سیستم بشن. چون پیامک فقط برای صاحب اکانت ارسال میشه. بنظر میرسه بهترین روش در حال حاضر همین روش هست چرا که خیلی از سایتهای هم از این روش دارن استفاده میکنن. این روش رو برای این سایت پیاده سازی کردم قبلا و تقریبا راضی هستن.
همونطوری که میبینید کاربر ابتدا نام کاربری و رمز عبورشو وارد میکنه و سپس تقاضای ارسال کد میکنه و کد برای ارسال میشه. (دقت کنید موقعی که کاربر تقاضای ارسال کد میکنه حتما باید نام کاربری و رمز عبور کاربر کنترل باشه که صحیح باشه و در صورت صحت نام کاربری و رمز عبور پیامک براش ارسال میشه.)
سیستم بانک ملت هم از همین روش داره استفاده میکنه
این روش گرچه هزینه سامانه پیامکی و پیامک داره ولی مطمئن ترین روش هست.
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
79
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
113
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1034
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
430
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4800
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
217
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
117
- پاسخ :
0
|
تاریخ :
1403/05/16
- ساعت :
09:57:00 AM
- بازدید :
397
- پاسخ :
2
|
تاریخ :
1403/06/25
- ساعت :
11:39:00 PM
- بازدید :
568
- پاسخ :
1
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2013
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
79
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
113
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1034
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
430
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
931
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4800
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1161
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
599
- پاسخ :
1
|