راکت
حل شده

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

7 پاسخ

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

  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 می تواند اطلاعات حسن محمودی را هم ببیند و هم ویرایش کند.

ثبت پرسش جدید

پاسخ‌ها

7
Alimotreb
Alimotreb
@Alimotreb

تخصص: کانفیگ سرور و برنامه نویس

بهترین پاسخ
حسام موسوی
حسام موسوی
@hesammousavi

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

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

auth()->user()

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

Alimotreb
Alimotreb
@Alimotreb

تخصص: کانفیگ سرور و برنامه نویس

سلام
@oxbir

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

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

محمود خسروی
محمود خسروی
@oxbir

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

سلام مجدد

@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

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

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

auth()->check()
محمود خسروی
محمود خسروی
@oxbir

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

سلام

@Alimotreb

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

هشنا
هشنا
@hashna

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

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

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