如何保护路线 Laravel-5.8.



嗨,我希望只有管理员才能访问文件控制器路由,或者用户无法通过键入 URL 来访问:

这些是路线:

  Route::group(['middleware' => ['web','auth']], function(){
     Route::get('/', function () {
       return view('welcome');
     });
     Route::get('/home', function(){
   if (Auth::user()->admin == 0) {
    return view('home');
   } else {
    $users['users'] = AppUser::all();
    return view('layouts.master', $users);
   }
     });
     Route::resource('file','FileController');
  });

用户无法访问 Route::resource('file','FileController'(;如果他知道 URL

使用中间件

以下命令创建名为 Admin 的新中间件

php artisan make:middleware Admin

这会在 app/Http/Middleware 目录中创建一个名为 Admin.php 的文件,如下所示

<?php namespace AppHttpMiddleware;
use Closure;
class Admin {
    public function handle($request, Closure $next)
    {
        if ( Auth::check() && Auth::user()->isAdmin() )
        {
            return $next($request);
        }
        return redirect('home');
    }
}

然后,您需要将管理中间件添加到您的应用程序/Http/内核.php文件中

protected $routeMiddleware = [
    'auth' => 'AppHttpMiddlewareAuthenticate',
    'auth.basic' => 'IlluminateAuthMiddlewareAuthenticateWithBasicAuth',
    'guest' => 'AppHttpMiddlewareRedirectIfAuthenticated',
    'admin' => 'AppHttpMiddlewareAdmin', // this line right here
];

将管理中间件添加到路由。

 Route::resource('file','FileController')->middleware(Admin::class)

最后,您需要将我们上面创建的 isAdmin 方法添加到您的用户模型中,以检查用户是否是管理员。

class User extends Model
{
    protected $casts = [
        'is_admin' => 'boolean',
    ];
    public function isAdmin()
    {
        return $this->is_admin;
    }
}

你可以使用Laravel中间件

网址 : https://laravel.com/docs/5.8/middleware或 https://www.tutorialspoint.com/laravel/laravel_middleware.htm

并用于路由

Route::group(['middleware' => 'isAdmin'], function(){
    Route::get('user', 'userUserController@index');
});

最新更新