راکت
حل شده

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

12 پاسخ

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

AriaieBOY
AriaieBOY
@ariaieboy
ثبت پرسش جدید

پاسخ‌ها

12
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

بهترین پاسخ

لاراول در اکثر کامپوننت هاش با استفاده از الگوهای طراحی مختلف... قابلیت انتخاب 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

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

AriaieBOY
AriaieBOY
@ariaieboy

تخصص: TALL Stack Lover

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

شاید پاسخ شما همین‌جا باشد

حسام موسوی
حسام موسوی
@hesammousavi

تخصص: طراح و برنامه نویس

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

AriaieBOY
AriaieBOY
@ariaieboy

تخصص: TALL Stack Lover

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

حسام موسوی
حسام موسوی
@hesammousavi

تخصص: طراح و برنامه نویس

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

محمد
محمد
@mprogrammer7

تخصص: Laravel

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

محمد
محمد
@mprogrammer7

تخصص: Laravel

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

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

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

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

محمد
محمد
@mprogrammer7

تخصص: Laravel

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

$user->sessions()

@ali.bayat

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

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

محمد
محمد
@mprogrammer7

تخصص: Laravel

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

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

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