如何保护路由 laravel-5.8
how to secure routes laravel-5.8
你好,我希望只有管理员可以访问 filecontroller 路由,否则用户无法通过键入 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'] = \App\User::all();
return view('layouts.master', $users);
}
});
Route::resource('file','FileController');
});
用户无法访问 Route::resource('file','FileController');如果他知道 URL
你可以使用laravel中间件
URL : https://laravel.com/docs/5.8/middleware
或 https://www.tutorialspoint.com/laravel/laravel_middleware.htm
并用于路由
Route::group(['middleware' => 'isAdmin'], function(){
Route::get('user', 'user\UserController@index');
});
以下命令创建名为 Admin 的新中间件
php artisan make:middleware Admin
这会在 app/Http/Middleware 目录中创建一个名为 Admin.php 的文件,看起来像
<?php namespace App\Http\Middleware;
use Closure;
class Admin {
public function handle($request, Closure $next)
{
if ( Auth::check() && Auth::user()->isAdmin() )
{
return $next($request);
}
return redirect('home');
}
}
然后您需要将管理中间件添加到您的 app/Http/Kernel.php 文件
protected $routeMiddleware = [
'auth' => 'App\Http\Middleware\Authenticate',
'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',
'guest' => 'App\Http\Middleware\RedirectIfAuthenticated',
'admin' => 'App\Http\Middleware\Admin', // 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;
}
}
你好,我希望只有管理员可以访问 filecontroller 路由,否则用户无法通过键入 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'] = \App\User::all();
return view('layouts.master', $users);
}
});
Route::resource('file','FileController');
});
用户无法访问 Route::resource('file','FileController');如果他知道 URL
你可以使用laravel中间件
URL : https://laravel.com/docs/5.8/middleware 或 https://www.tutorialspoint.com/laravel/laravel_middleware.htm
并用于路由
Route::group(['middleware' => 'isAdmin'], function(){
Route::get('user', 'user\UserController@index');
});
以下命令创建名为 Admin 的新中间件
php artisan make:middleware Admin
这会在 app/Http/Middleware 目录中创建一个名为 Admin.php 的文件,看起来像
<?php namespace App\Http\Middleware;
use Closure;
class Admin {
public function handle($request, Closure $next)
{
if ( Auth::check() && Auth::user()->isAdmin() )
{
return $next($request);
}
return redirect('home');
}
}
然后您需要将管理中间件添加到您的 app/Http/Kernel.php 文件
protected $routeMiddleware = [
'auth' => 'App\Http\Middleware\Authenticate',
'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',
'guest' => 'App\Http\Middleware\RedirectIfAuthenticated',
'admin' => 'App\Http\Middleware\Admin', // 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;
}
}