【发布时间】:2021-09-24 07:39:42
【问题描述】:
我想管理路由中的授权,所以我创建了一个名为“role”的中间件 这是角色中间件句柄函数:
public function handle(Request $request, Closure $next)
{
$role = Auth::user()->role_id;
$emp_id = Auth::user()->employee_id;
$clt_id = Auth::user()->client_id;
if ($role == 3745639763)
{
return $next($request);
} else if ($role == 1 && $emp_id == NULL)
{
return redirect('employee/con-reg');
} else if ($role == 2 && $clt_id == NULL)
{
return $next($request);
} else if ($role == 1 && $emp_id != NULL)
{
return redirect('client/con-reg');
} else if ($role == 2 && $clt_id != NULL)
{
return $next($request);
}
}
这是我给员工的路线:
Route::group([
'prefix'=> 'employee',
'middleware' => 'role',
'as' => 'employee.'
], function () {
Route::get('/con-reg', function () {
$works = Work::all();
return view('employee/con-register', compact('works'));
})->name('con-reg');
Route::post('/store', [EmployeeController::class, 'store'])->name('store');
Route::post('/profile', [EmployeeController::class, 'index'])->name('index');
});
这是首页路径,登录或注册后,您将被重定向到首页,这也是我放置中间件的地方,因为他可以在继续注册后访问首页,并为我们提供更多需要的信息他选择的角色:
Route::view('/home', 'home')->middleware('role');
这是Kernal.php文件:
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,
'emp' => \App\Http\Middleware\emp::class,
// 'clt' => \App\Http\Middleware\clt::class,
'role' => \App\Http\Middleware\role::class, //<------This is My Middleware
];
所以现在当我登录时,它并没有将我重定向到 con-register 视图,而是出现上面的错误。
【问题讨论】:
标签: php laravel routes middleware laravel-8