سلام خدمت همگی
من از لاراول 7 دارم استفاده میکنم برای یکی از پروژه هام و برای بحث اعتبارسنجی کاربران دارم از authentication خود لاراول با کمی تغییرات استفاده میکنم.
یکی از قابلیت هایی که دوست دارم استفاده کنم بحث مدیریت نشست ها هست که توی خود راکت هم داریم این را میبینیم.
یعنی چی یعنی اینکه کاربر بتونه تاریخچه لاگین های اکانتش ببینه و دستگاه هایی که داخلش لاگین شده و به عنوان مرا به خاطر بسپار ذخیره شده را ببینه و اگر خواست بگه مثلا فلان دستگاه نتونه با استفاده از اون کوکی مرابه خاطر بسپار لاگین بشه و از این دست کار ها و کلا مدیریت نشست ها را کاربر بتونه انجام بده.
برای اینکار لایبراری خاصی وجود داره یا نه ؟
و اگر لایبراری وجود نداره برای پیاده سازی این قابلیت باید از کجا شروع بکنیم ؟
لاراول در اکثر کامپوننت هاش با استفاده از الگوهای طراحی مختلف... قابلیت انتخاب Driver رو قرار داده..
حالا برای Session هم لاراول چند حالت کلی رو ساپورت میکنه (چند درایور مختلف):
شما کافیه نوع درایور رو در فایل کانفیگ config/session.php به دیتابیس تغییر بدی و جدولش رو هم بسازی:
php artisan session:table
php artisan migrate
بعد میتونی یک پنل کوچیک بنویسی که اطلاعات جدول sessions رو نشون بده.
به نظر من باید هر کسی هر بار که لاگین میکنه یه دونه رکورد توی دستابس ذخیره کنی که این فیلد ها رو داشته باشه.
نام کاربری.
تاریخ ورود.
سیستمی که با آن لاگین کرده.
آی پی.
بعد در پنل کاربریت می تونی این ها رو به طرف نمایش بدی.
@mohammad.khakdaman
این خوب واضح هست ولی خوب مسئله ای که هست اینه که خود لاراول برای هر کاربر میاد یک remember_token استفاده میکنه.
اینجوری نیست که برای هر دیوایس بیاد و یک remember_token جدا بسازه حالا سوال من اینه که اگر لایبراری نداریم برای این قضیه چجوری میتونیم خودمون اون بخش remember_me لاراول بازنویسی کنیم و بر اساس هر دیوایس این موارد ذخیره کنیم.
در راکت ما اینکارو با session انجام دادیم
در api شما می تونید درخواستهای لاگین api رو در جدولی ذخیره کنید که در اون مشخصات هر سیستم قرار گرفته باشه
@hesammousavi خیلی ممنون بابت پاسختون ولی من دقیق متوجه نشدم که منظورتون چی هست.
در نهایت که باید ما سشن داشته باشیم وگرنه چون استیت لس هست http اصلا قابلیت لاگین و authorize از دست میدیم.
اگر بشه یکم بیشتر توضیح بدید که چطوری پیاده سازی کردید خیلی ممنون میشم.
بعدشم مسئله بعدی که من دارم این هست که لاراول برای مدیریت remember me میاد و از یک remember_token یکتا توی جدول یوزر استفاده میکنه و در واقع برای هر یوزر ما یک توکن داریم نه برای هر دیوایس یک توکن اون موقع ما بخواهیم توکن برای یک دیوایس خاص revoke کنیم باید چیکار کنیم ؟
من خودم یکسری سرچ کردم پکیج زیر پیدا کردم ولی هم ستاره هاش داخل گیت هاب کم هست هم تعداد نصبش داخل packagist میخواستم ببینم آیا safe هست از همچین پکیجی استفاده کرد یا نه ؟
https://github.com/alajusticia/laravel-auth-tracker
اگر session دارید فقط درایور ذخیره سازی session رو رویه دیتابیس قرار بدید و جدولش رو هم بر اساس توضیحات مستندات بسازید و پایان بعدش روی نشستها کنترل خواهید داشت
لاراول در اکثر کامپوننت هاش با استفاده از الگوهای طراحی مختلف... قابلیت انتخاب Driver رو قرار داده..
حالا برای Session هم لاراول چند حالت کلی رو ساپورت میکنه (چند درایور مختلف):
شما کافیه نوع درایور رو در فایل کانفیگ config/session.php به دیتابیس تغییر بدی و جدولش رو هم بسازی:
php artisan session:table
php artisan migrate
بعد میتونی یک پنل کوچیک بنویسی که اطلاعات جدول sessions رو نشون بده.
سلام
من دوتا دستور رو زدم ولی فیلد user_id خالیه پر نمیشه
باید مدل session هم درست کنم و بعد رابطه یک به چند user با Session درست کنم؟
@ali.bayat
لینکی در مورد اینکه چطور last activity رو به زمان تبدیل کنیم و چطور از user agent نوع مرورگر و دستگاه رو متوجه بشیم معرفی میکنید؟
@ali.bayat
باید مدل session هم درست کنم و بعد رابطه یک به چند user با Session درست کنم؟
خیر خودش متوجه میشه.
برای User agent نگاهی به پکیج زیر بندازید
https://github.com/jenssegers/agent
خب الان چطور سشن های یه کاربر رو بگیریم وقتی مدل و روابط سشن نیست؟
منظورم اینه اگه مدل و روابط سشن با user بود میگفتیم
$user->sessions()
عالی بود این روش فک نمیکردم مدیریت سشن هایی که کاربر وارد شده انقد اسون باشه
الان تمام ip هایی که کاربر وارد شده , دستگاهشون نوع مرورگر اخرین فعالیت رو نشون میده و میشه حذفشون کرد
دقیقا مثل مدیریت سشن ها با jetstream
@ali.bayat
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟