محمود خسروی
5 سال پیش توسط محمود خسروی مطرح شد
7 پاسخ

چگونه کاربر را با شماره id دیگران نتواند وارد شود

ما دو کاربر داریم قرض کنید با آی دی و نام های زیر

  1. علی مرادی
  2. حسن محمودی

من آمدم کد زیر را نوشتم برای لاگین کردن کاربران و ویرایش اطلاعات کاربران

web.php

Route::group(['middleware' => 'auth', 'prefix' => 'user/panel'], function () {
    Route::get('/', 'UserController@index')->name('user.panel');
    Route::get('{user}/edit', 'UserController@edit')->name('user.panel.edit');
    Route::get('/update', 'UserController@update')->name('user.panel.update');
});

فرض کنید کاربر با آی دی 1 با آدرس http://localhost:8000/user/panel/1/edit آمد لاگین کرد و بعد با آدرس http://localhost:8000/user/panel/2/edit می تواند اطلاعات حسن محمودی را هم ببیند و هم ویرایش کند.


ثبت پرسش جدید
Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 5 سال پیش مطرح شد
حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 5 سال پیش مطرح شد
0

دو روش هست یک اینکه اصلا با id در url کار نکنید و بجاش اطلاعات کاربر رو از همون اطلاعات شخصی که لاگین کرده بگیرید یعنی

auth()->user()

و روش دوم اینکه اگر خیلی اصرار دارید از روش خودتون استفاده کنید نیازه چک کنید مثلا ای دی شخصی که قرار ویرایش بشه و با ای دی شخصی که لاگین کرده یکی هست یا نه اگر بود اجازه داره اگر نبود اجازه نداره.


Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 5 سال پیش آپدیت شد
0

سلام
@oxbir

شما اطلاعاتی که در سمت کنترلر میگیرید رو حتما حتما ولیدیشن کنید با اطلاعاتی که تو دیتابیس دارید
در سشن دارید
در جاهای دیگه دارید
تا به فرض یوزر 1 دسترسی برای ادیت یوزر 2 نداشته باشه
آیدی رو چک کنید
پسورد رو چک کنید
سشن رو چک کنید
ایمیل رو چک کنید


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

سلام مجدد

@hesammousavi

من از روش دوم استفاده کردم به ان شکل نوشتم نمیدونم منظ.رتون اینه؟

web.php

Route::middleware(['auth', 'checkLogin'])->prefix('user/panel')->group(function () {

بعد امدم توی Kernel.php

'checkLogin' => \App\Http\Middleware\CheckLogin::class,

CheckLogin.php

public function handle($request, Closure $next)
{
    if (auth()->user()->id){
        return $next($request);
    }
}

هیچ چیز برای من اتفاق خاصی نیافتاد. نمی دونم شاید من اشتباه میکنم


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

برای چک کردن لاگین از این کد استفاده میشه

auth()->check()

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

سلام

@Alimotreb

سشن را چطوری چک کنم؟


Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 5 سال پیش مطرح شد
هشنا
@hashna 5 سال پیش مطرح شد
1

سلام
شما باید Permision تعریف کنید یعنی فقط ادمین و خود اون کاربر بتونه به این صفحه دسترسی داشته باشه مثلا یه تابع بنویسید اگه user_group بالاتر از 10 یا user_id برابر بود با ایدی که در سشن ذخیره کردید اون وقت این صفحه را نمایش بده


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

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