php artisan make:middleware CheckPermission该命令会在 `app/Http/Middleware` 目录下创建一个名为 `CheckPermission.php` 的文件。
<?php namespace App\Http\Middleware; use Closure; class CheckPermission { public function handle($request, Closure $next) { // 验证用户的权限 if (!auth()->user()->hasPermission('admin')) { abort(403, 'Unauthorized action.'); } return $next($request); } }
在上面的例子中,假设用户必须具有 'admin' 权限才能访问指定页面,否则会返回403错误。
protected $routeMiddleware = [ // 其他中间件... 'can.access' => \App\Http\Middleware\CheckPermission::class, ];
这样,我们就可以在路由中使用该别名来应用中间件。
Route::get('/admin/dashboard', function () { // 访问控制逻辑 })->middleware('can.access');
这段代码确保只有具备 'admin' 权限的用户才能访问 /admin/dashboard 页面。
public function handle($request, Closure $next, $role) { // 验证用户的角色 if (!auth()->user()->hasRole($role)) { abort(403, 'Unauthorized action.'); } return $next($request); }
在此代码中,我们增加了一个 $role 参数,用于传递需要验证的角色。
protected $routeMiddleware = [ // 其他中间件... 'has.role' => \App\Http\Middleware\CheckPermission::class, ];
Route::get('/admin/dashboard', function () { // 访问控制逻辑 })->middleware('has.role:admin');
通过这种方式,只有具备 'admin' 角色的用户才能访问 /admin/dashboard 页面。