幾乎標題總結了它。我有一個 laravel 應用程式,我在筆記本電腦上開發并測驗它何時在 127.0.0.1/8000 上運行 - 我剛剛為不同用戶(管理員、員工和門戶用戶)添加了中間件
當未登錄并嘗試訪問管理路由(127.0.0.1/8000/admin/reporting)時,我成功被拒絕并重定向到主頁。現在我將它推送到 GitHub 并在 ubuntu VM 上拉取,我仔細檢查了這些更改。
但是當我訪問服務器的 URL 時,我仍然可以訪問所有頁面而無需經過身份驗證。
你們中有人有類似的問題嗎?我不確定我應該提供什么代碼,所以請告訴我,我會將其添加到帖子中。
謝謝
編輯:中間件代碼
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,
'admin' => \App\Http\Middleware\AdminMiddleware::class,
'employee' => \App\Http\Middleware\EmployeeMiddleware::class,
'portal' => \App\Http\Middleware\PortalMiddleware::class,
];
管理中間件:
public function handle(Request $request, Closure $next)
{
if (!Auth::user() || Auth::user()->abteilung_name != 'Gesch?ftsführung') {
return redirect('/')->with('redirect_error', 'Auf diese Seite haben Sie keinen Zugriff');
}
return $next($request);
}
員工中間件:
public function handle(Request $request, Closure $next)
{
if (!Auth::user() || !auth()->user()) {
return redirect('/')->with('redirect_error', 'Auf diese Seite haben Sie keinen Zugriff');
}
return $next($request);
}
門戶中間件:
public function handle(Request $request, Closure $next)
{
if (!Auth::user() || !Auth::guard('portal')->user()) {
return redirect('/')->with('redirect_error', 'Auf diese Seite haben Sie keinen Zugriff');
}
return $next($request);
}
這是一個示例路由,其他所有看起來都差不多 - 只是最后的中間件因路由而異。
Route::get('/admin/reporting', [AdminController::class, 'getReportingView'])->name('reporting')->middleware('admin');
uj5u.com熱心網友回復:
您的路線似乎已被快取。由于這是在您的服務器(主機)上,您應該重新快取路由:
php artisan route:cache
您應該將這部分作為部署程序的一部分,以及重新快取配置 ( php artisan config:cache)、運行composer install、運行遷移 ( php artisan migrate) 等。
如果這不是一個真正的活動站點并且您仍在開發中,您也可以根本不快取路由,那么您不需要在每次更改路由時重新快取它們。您可以使用清除快取php artisan route:clear。這就是您在本地運行的方式,無需快取路由。只需確保在部署實時站點時快取路由是您流程的一部分。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/414494.html
標籤:
