Php 你能在控制器或路由中以同样的方式使用中间件吗?
我试图确保你不能只在顶部栏中键入/admin。我在用户表中增加了一列名为Php 你能在控制器或路由中以同样的方式使用中间件吗?,php,laravel,laravel-blade,laravel-routing,Php,Laravel,Laravel Blade,Laravel Routing,我试图确保你不能只在顶部栏中键入/admin。我在用户表中增加了一列名为admin,它要么是0(普通用户)要么是1(管理员) 在刀片页面中,我正在检查: @if (Auth::check()) @if (Auth::user()->admin == 1) <p>Hello Admin</p> @else <p>Hello standard user</p> @endif @endif 或者在控制器中(类似于此的内容)
admin
,它要么是0
(普通用户)要么是1
(管理员)
在刀片页面中,我正在检查:
@if (Auth::check())
@if (Auth::user()->admin == 1)
<p>Hello Admin</p>
@else
<p>Hello standard user</p>
@endif
@endif
或者在控制器中(类似于此的内容)
您可以使用新的中间件来实现这一点 首先,通过在控制台中键入以下内容来创建新的中间件:
php artisan make:中间件isAdmin
无论您喜欢什么,都可以命名您的中间件,isAdmin在这里很常见
接下来,您必须将中间件添加到位于app/Http/Kernel.php的Kernel.php中,编辑名为$routeMiddleware
的数组并添加以下内容:
'isAdmin'=>\App\Http\Middleware\isAdmin::class,
打开位于中间件文件夹中的IsAdmin.php,修改handle方法,如下所示:
{
if (Auth::user() && Auth::user()->admin == 1) {
return $next($request);
}
return redirect('/');
}
注意:中间件还将检查用户是否经过身份验证,以便可以代替管理员路由的身份验证,请记住修改返回以满足您的需要
Route::get('/home', 'HomeController@index')->name('home')->middleware('auth')-where('admin' 1);
public function __construct()
{
$this->middleware('auth')->where('admin' 1);
}
最后,将中间件添加到您的路由中,有许多方法可以做到这一点
- 如果您计划使用它而不是身份验证中间件,只需在路由文件
->middleware('isAdmin')
- 另一个选项是像这样修改路由文件
因此,您不需要将中间件应用于每条路由,这里有许多可能性您可以使用新的中间件来实现这一点 首先,通过在控制台中键入以下内容来创建新的中间件:
php artisan make:中间件isAdmin
无论您喜欢什么,都可以命名您的中间件,isAdmin在这里很常见
接下来,您必须将中间件添加到位于app/Http/Kernel.php的Kernel.php中,编辑名为$routeMiddleware
的数组并添加以下内容:
'isAdmin'=>\App\Http\Middleware\isAdmin::class,
打开位于中间件文件夹中的IsAdmin.php,修改handle方法,如下所示:
{
if (Auth::user() && Auth::user()->admin == 1) {
return $next($request);
}
return redirect('/');
}
注意:中间件还将检查用户是否经过身份验证,以便可以代替管理员路由的身份验证,请记住修改返回以满足您的需要
Route::get('/home', 'HomeController@index')->name('home')->middleware('auth')-where('admin' 1);
public function __construct()
{
$this->middleware('auth')->where('admin' 1);
}
最后,将中间件添加到您的路由中,有许多方法可以做到这一点
- 如果您计划使用它而不是身份验证中间件,只需在路由文件
->middleware('isAdmin')
- 另一个选项是像这样修改路由文件