NESYOU
3 سال پیش توسط NESYOU مطرح شد
13 پاسخ

خطا middleware

سلام وقت بخیر
این Middleware منه

    public function handle(Request $request, Closure $next)
    {

        if(Auth::check()){
            if(Auth::user()->level == 1){
                return $next($request);
            }else{

                return redirect(route('home'));
            }
        }
        return $next($request);
    }

ولی وقتی redirect میزارم با این صفحه مرورگر برخورد میکنم
This page isn’t workinglocalhost redirected you too many times.
Try clearing your cookies.
ERR_TOO_MANY_REDIRECTS

dd ک میزارم بجای redirect درست کار میکنه
@hesammousavi


ثبت پرسش جدید
Saman
تخصص : برنامه نویس وب
@samanzdev 3 سال پیش مطرح شد
0

با سلام
داخل else از این کد استفاده کنید:

 return response(redirect()->route('home'));

اگر مشکلتون حل نشد از home عکس بفرستید
موفق باشید
@nesyourys


سینا خاقانی
تخصص : توسعه دهنده بک‌اند
@sina.it91 3 سال پیش مطرح شد
0

@nesyourys
سلام

دستور redirect رو به این صورت بنویسید

redirect()->route('home');
redirect('home')

NESYOU
تخصص : توسعه دهنده بک اند
@nesyourys 3 سال پیش مطرح شد
0

همه اینا رو چک کردم ولی به نتیجه نرسیدم همشون یکیه
@sina.it91


سینا خاقانی
تخصص : توسعه دهنده بک‌اند
@sina.it91 3 سال پیش آپدیت شد
0

@nesyourys
اینم امتحان کن شاید نتیجه داد

return (request()->header('referer')) ? redirect()->back() : redirect()->route('home');

اگر نشد کد صفحه ی home رو هم بزار ببینیم


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

سلام
نکته مهم اینکه شما middleware رو بد نوشتی، کدت رو اصلاح کردم و بهتره به صورت زیر بنویسی:

public function handle(Request $request, Closure $next)
    {

            if(auth()->user()->level == 1) {
                return $next($request);
            }

            return redirect()->route('home');
    }

حالا اون Auth::Ckeck کجا رفت؟ نیازی به اون نیست، در واقع میتونی از میدلور auth روی route خودت استفاده کنی و دقیقا مشابه همون if هست

همین، فکر کنم مشکلت حل بشه


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

با سلام
داخل else از این کد استفاده کنید:

 return response(redirect()->route('home'));

اگر مشکلتون حل نشد از home عکس بفرستید
موفق باشید
@nesyourys


NESYOU
تخصص : توسعه دهنده بک اند
@nesyourys 3 سال پیش مطرح شد
0

@mrmmg
اینم همونو داد


NESYOU
تخصص : توسعه دهنده بک اند
@nesyourys 3 سال پیش مطرح شد
0

@samanzdev
@mrmmg
توضیح تصویر رو وارد کنید

توضیح تصویر رو وارد کنید
@samanzdev این کد رو ک نوشتم

 return response(redirect()->route('home')); 

صفحه هر چند ثانیه رفرش میشد


NESYOU
تخصص : توسعه دهنده بک اند
@nesyourys 3 سال پیش مطرح شد
0

@samanzdev

شما راه حل دیگه ای برای انجام همین کار ندارید؟


سینا خاقانی
تخصص : توسعه دهنده بک‌اند
@sina.it91 3 سال پیش مطرح شد
0

@nesyourys
اگه میتونی کد کنترولر صفحه home و روت اون رو بزار


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

می تونم ریموت بشم به سیستمتون ؟
مشکل رو سریع تر میشه حل کرد.
@nesyourys


NESYOU
تخصص : توسعه دهنده بک اند
@nesyourys 3 سال پیش آپدیت شد
0

سلام
بله حتما
با anydesk؟
nesyou0105 ایدی تلگرامم اگ میشه اونجا پیام بدید ک راحت تره بشه چت کرد
@samanzdev


NESYOU
تخصص : توسعه دهنده بک اند
@nesyourys 3 سال پیش آپدیت شد
0

UserLevel MIddleware

class UserLevel
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle(Request $request, Closure $next)
    {
        if(Auth::user()->level == 1 ){
            return $next($request);
        }
        return redirect('/');
        return $next($request);
    }        

}

Web.php


Route::get('/', function () {return view('welcome');})->name('home');
Route::middleware(['auth:sanctum', 'verified', 'UserLevel'])->get('/dashboard', [App\Http\Controllers\Admin\DashboardController::class,'index'])->name('dashboard');

Route::group([ 'namespace' => 'App\Http\Controllers\Admin' , 'middleware' => ['auth','UserLevel'] ,'prefix' => 'admin'], function () {
    Route::post('calculation/detail', 'calculationController@detail')->name('calculation.detail');
    Route::resource('user', 'UserController');
    Route::resource('price', 'PriceController');
    Route::resource('seller', 'SellerController');
    Route::resource('purchase', 'PurchaseController');
    Route::resource('calculation', 'calculationController');
});

kernel.php

    protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \Laravel\Jetstream\Http\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
            \App\Http\Middleware\UserLevel::class,
        ],

        'api' => [
            'throttle:api',
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],
    ];
    protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
        'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
        'UserLevel' => \App\Http\Middleware\UserLevel::class,
    ];

@sina.it91


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

سلام مجدد
داخل تگرامتون یه چک بفرمایید
@nesyourys


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

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