我正在尝试通过以下代码将管理员重定向到仪表板页面,但是当我输入时/dashboard
,浏览器将显示NotFoundHttpException
错误页面。
中间件(AdminCheck.php):
<?php
namespace App\Http\Middleware;
use Closure;
class AdminCheck
{
public function handle($request, Closure $next)
{
$user = auth()->authenticate();
if ($user->role !== 'admin')
{
return redirect(route('login'));
}
return $next($request);
}
}
Kernel.php(App \ Http \ Kernel.php):
protected $routeMiddleware = [
...
'adminCheck' => \App\Http\Middleware\AdminCheck::class,
];
路线(App \ routes \ web.php):
Route::get('dashboard', function (){
//
})->middleware('auth', 'adminCheck');
dashboard.php:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
class dashboard extends Controller
{
public function index ()
{
return view('dashboard');
}
}
当我输入时http://localhost:8000/dashboard
,显示一个错误页面,显示:
Sorry, the page you are looking for could not be found.
我似乎无法解决这个问题,这真是愚蠢。您能帮我找出问题所在吗?提前非常感谢您。
也许它来自您的控制器名称。Laravel遵循PSR-4自动加载类的标准,请参见此处的文档,您的类名应以大写字母开头:
\ NamespaceName {\ SubNamespaceNames *} \ ClassName
尝试将您的dashboard.php重命名为Dashboard.php,重新制作一个php composer dumpautoload
以查看?此路线应在此之后起作用:
Route::get('dashboard', 'Dashboard@index')->middleware('auth', 'adminCheck');
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句