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

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

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


ثبت پرسش جدید
علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat6 سال پیشمطرح شد
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.khakdaman6 سال پیشمطرح شد
0

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


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

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


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

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


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

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


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

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


علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat6 سال پیشمطرح شد
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
@mprogrammer74 سال پیشمطرح شد
0

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


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

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


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

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

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


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

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

$user->sessions()

@ali.bayat


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

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


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

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


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

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