AriaieBOY
4 سال پیش توسط AriaieBOY مطرح شد
12 پاسخ

مدیریت نشست ها در لاراول

سلام خدمت همگی
من از لاراول 7 دارم استفاده میکنم برای یکی از پروژه هام و برای بحث اعتبارسنجی کاربران دارم از authentication خود لاراول با کمی تغییرات استفاده میکنم.
یکی از قابلیت هایی که دوست دارم استفاده کنم بحث مدیریت نشست ها هست که توی خود راکت هم داریم این را میبینیم.
یعنی چی یعنی اینکه کاربر بتونه تاریخچه لاگین های اکانتش ببینه و دستگاه هایی که داخلش لاگین شده و به عنوان مرا به خاطر بسپار ذخیره شده را ببینه و اگر خواست بگه مثلا فلان دستگاه نتونه با استفاده از اون کوکی مرابه خاطر بسپار لاگین بشه و از این دست کار ها و کلا مدیریت نشست ها را کاربر بتونه انجام بده.
برای اینکار لایبراری خاصی وجود داره یا نه ؟
و اگر لایبراری وجود نداره برای پیاده سازی این قابلیت باید از کجا شروع بکنیم ؟


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
7

لاراول در اکثر کامپوننت هاش با استفاده از الگوهای طراحی مختلف... قابلیت انتخاب Driver رو قرار داده..

حالا برای Session هم لاراول چند حالت کلی رو ساپورت میکنه (چند درایور مختلف):

  • ذخیره سشن در یک فایل (پیش فرض) (file driver)
  • ذخیره سشن در یک آرایه (array driver)
  • ذخیره سشن در یک کوکی انکریپت شده (cookie driver)
  • ذخیره سشن در دیتابیس (database driver)
  • ذخیره سشن در memcached و redis و ...

شما کافیه نوع درایور رو در فایل کانفیگ config/session.php به دیتابیس تغییر بدی و جدولش رو هم بسازی:

php artisan session:table

php artisan migrate

بعد میتونی یک پنل کوچیک بنویسی که اطلاعات جدول sessions رو نشون بده.


محمد خاکدامن
@mohammad.khakdaman 4 سال پیش مطرح شد
0

به نظر من باید هر کسی هر بار که لاگین میکنه یه دونه رکورد توی دستابس ذخیره کنی که این فیلد ها رو داشته باشه.
نام کاربری.
تاریخ ورود.
سیستمی که با آن لاگین کرده.
آی پی.
بعد در پنل کاربریت می تونی این ها رو به طرف نمایش بدی.


AriaieBOY
تخصص : TALL Stack Lover
@ariaieboy 4 سال پیش مطرح شد
0

@mohammad.khakdaman
این خوب واضح هست ولی خوب مسئله ای که هست اینه که خود لاراول برای هر کاربر میاد یک remember_token استفاده میکنه.
اینجوری نیست که برای هر دیوایس بیاد و یک remember_token جدا بسازه حالا سوال من اینه که اگر لایبراری نداریم برای این قضیه چجوری میتونیم خودمون اون بخش remember_me لاراول بازنویسی کنیم و بر اساس هر دیوایس این موارد ذخیره کنیم.


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 4 سال پیش مطرح شد
3

در راکت ما اینکارو با session انجام دادیم
در api شما می تونید درخواست‌های لاگین api رو در جدولی ذخیره کنید که در اون مشخصات هر سیستم قرار گرفته باشه


AriaieBOY
تخصص : TALL Stack Lover
@ariaieboy 4 سال پیش مطرح شد
0

@hesammousavi خیلی ممنون بابت پاسختون ولی من دقیق متوجه نشدم که منظورتون چی هست.
در نهایت که باید ما سشن داشته باشیم وگرنه چون استیت لس هست http اصلا قابلیت لاگین و authorize از دست میدیم.
اگر بشه یکم بیشتر توضیح بدید که چطوری پیاده سازی کردید خیلی ممنون میشم.
بعدشم مسئله بعدی که من دارم این هست که لاراول برای مدیریت remember me میاد و از یک remember_token یکتا توی جدول یوزر استفاده میکنه و در واقع برای هر یوزر ما یک توکن داریم نه برای هر دیوایس یک توکن اون موقع ما بخواهیم توکن برای یک دیوایس خاص revoke کنیم باید چیکار کنیم ؟
من خودم یکسری سرچ کردم پکیج زیر پیدا کردم ولی هم ستاره هاش داخل گیت هاب کم هست هم تعداد نصبش داخل packagist میخواستم ببینم آیا safe هست از همچین پکیجی استفاده کرد یا نه ؟
https://github.com/alajusticia/laravel-auth-tracker


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 4 سال پیش مطرح شد
4

اگر session دارید فقط درایور ذخیره سازی session رو رویه دیتابیس قرار بدید و جدولش رو هم بر اساس توضیحات مستندات بسازید و پایان بعدش روی نشست‌ها کنترل خواهید داشت


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
7

لاراول در اکثر کامپوننت هاش با استفاده از الگوهای طراحی مختلف... قابلیت انتخاب Driver رو قرار داده..

حالا برای Session هم لاراول چند حالت کلی رو ساپورت میکنه (چند درایور مختلف):

  • ذخیره سشن در یک فایل (پیش فرض) (file driver)
  • ذخیره سشن در یک آرایه (array driver)
  • ذخیره سشن در یک کوکی انکریپت شده (cookie driver)
  • ذخیره سشن در دیتابیس (database driver)
  • ذخیره سشن در memcached و redis و ...

شما کافیه نوع درایور رو در فایل کانفیگ config/session.php به دیتابیس تغییر بدی و جدولش رو هم بسازی:

php artisan session:table

php artisan migrate

بعد میتونی یک پنل کوچیک بنویسی که اطلاعات جدول sessions رو نشون بده.


محمد
تخصص : Laravel
@mprogrammer7 3 سال پیش مطرح شد
0

سلام
من دوتا دستور رو زدم ولی فیلد user_id خالیه پر نمیشه
باید مدل session هم درست کنم و بعد رابطه یک به چند user با Session درست کنم؟
@ali.bayat


محمد
تخصص : Laravel
@mprogrammer7 3 سال پیش مطرح شد
0

لینکی در مورد اینکه چطور last activity رو به زمان تبدیل کنیم و چطور از user agent نوع مرورگر و دستگاه رو متوجه بشیم معرفی میکنید؟
@ali.bayat


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 3 سال پیش مطرح شد
1

باید مدل session هم درست کنم و بعد رابطه یک به چند user با Session درست کنم؟

خیر خودش متوجه میشه.
برای User agent نگاهی به پکیج زیر بندازید
https://github.com/jenssegers/agent


محمد
تخصص : Laravel
@mprogrammer7 3 سال پیش آپدیت شد
0

خب الان چطور سشن های یه کاربر رو بگیریم وقتی مدل و روابط سشن نیست؟
منظورم اینه اگه مدل و روابط سشن با user بود میگفتیم

$user->sessions()

@ali.bayat


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 3 سال پیش مطرح شد
2

بله برای گرفتن یوزر بهش احتیاج داری..
من فکر کردم شما عملکرد کلی رو میگین


محمد
تخصص : Laravel
@mprogrammer7 3 سال پیش مطرح شد
0

عالی بود این روش فک نمیکردم مدیریت سشن هایی که کاربر وارد شده انقد اسون باشه
الان تمام ip هایی که کاربر وارد شده , دستگاهشون نوع مرورگر اخرین فعالیت رو نشون میده و میشه حذفشون کرد
دقیقا مثل مدیریت سشن ها با jetstream
@ali.bayat


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

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