NESYOU
4 سال پیش توسط 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


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

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

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

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


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

@nesyourys
سلام

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

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

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

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


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

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

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

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


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

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

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

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


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

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


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

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

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

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

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


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

@samanzdev

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


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

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


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

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


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

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


NESYOU
تخصص : توسعه دهنده بک اند
@nesyourys 4 سال پیش آپدیت شد
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 4 سال پیش مطرح شد
1

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


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

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