laravel 的多重身份验证
Multiple auth for laravel
我想将中间件身份验证分为两个角色,一个是管理员,第二个是用户
但是有些路由供所有用户和管理员使用,很少有路由仅供管理员使用我如何与路由分开?
Auth::routes();
Route::group(['middleware' => 'auth'], function () {
//Some route here
});
Route::group(['middleware' => ['guest']], function () {
//some route here
});
这是我对管理员和用户(在我的例子中是代理)访问控制的实现我的用户中有一个布尔字段 table (is_admin
) 普通用户为 0,普通用户为 1对于管理员。
在您的用户模型中添加:
protected $casts = [
'is_admin' => 'boolean',
];
public function isAdmin()
{
return $this->is_admin;
}
为 Admin 和 Agent 创建一个新的中间件:
php artisan make:middleware Admin
php artisan make:middleware Agent
中间件文件将在 App\Http\Middleware\
中创建
将此添加到 Admin.php
内的 class:
public function handle($request, Closure $next)
{
if ( Auth::check() && Auth::user()->isAdmin() )
{
return $next($request);
}
return redirect('/agent');
}
将此添加到 Agent.php
public function handle($request, Closure $next)
{
if ( Auth::check() && !Auth::user()->isAdmin() )
{
return $next($request);
}
return redirect('/home');
}
在 向 laravel 注册你的中间件 之后,将其添加到你的 Kernel.php
中的 protected $routeMiddleware
,它位于 app\Http\Kernel.php
'admin' => 'App\Http\Middleware\Admin',
'agent' => 'App\Http\Middleware\Agent',
确保创建正确的重定向路由,正如我们在中间件文件中提到的那样。在这之后你就差不多完成了。现在要验证用户是管理员还是普通用户,请将其添加到控制器的构造函数中。
仅允许管理员用户执行的操作:
public function __construct()
{
$this->middleware('auth');
$this->middleware('admin');
}
仅允许普通(代理)用户执行的操作:
public function __construct() {
$this->middleware('auth');
$this->middleware('agent');
}
或者你也可以在路由中添加中间件,
Route::group(['middleware' => 'admin'], function () {
//Some route here
});
我想将中间件身份验证分为两个角色,一个是管理员,第二个是用户 但是有些路由供所有用户和管理员使用,很少有路由仅供管理员使用我如何与路由分开?
Auth::routes();
Route::group(['middleware' => 'auth'], function () {
//Some route here
});
Route::group(['middleware' => ['guest']], function () {
//some route here
});
这是我对管理员和用户(在我的例子中是代理)访问控制的实现我的用户中有一个布尔字段 table (is_admin
) 普通用户为 0,普通用户为 1对于管理员。
在您的用户模型中添加:
protected $casts = [
'is_admin' => 'boolean',
];
public function isAdmin()
{
return $this->is_admin;
}
为 Admin 和 Agent 创建一个新的中间件:
php artisan make:middleware Admin
php artisan make:middleware Agent
中间件文件将在 App\Http\Middleware\
将此添加到 Admin.php
内的 class:
public function handle($request, Closure $next)
{
if ( Auth::check() && Auth::user()->isAdmin() )
{
return $next($request);
}
return redirect('/agent');
}
将此添加到 Agent.php
public function handle($request, Closure $next)
{
if ( Auth::check() && !Auth::user()->isAdmin() )
{
return $next($request);
}
return redirect('/home');
}
在 向 laravel 注册你的中间件 之后,将其添加到你的 Kernel.php
中的 protected $routeMiddleware
,它位于 app\Http\Kernel.php
'admin' => 'App\Http\Middleware\Admin',
'agent' => 'App\Http\Middleware\Agent',
确保创建正确的重定向路由,正如我们在中间件文件中提到的那样。在这之后你就差不多完成了。现在要验证用户是管理员还是普通用户,请将其添加到控制器的构造函数中。
仅允许管理员用户执行的操作:
public function __construct()
{
$this->middleware('auth');
$this->middleware('admin');
}
仅允许普通(代理)用户执行的操作:
public function __construct() {
$this->middleware('auth');
$this->middleware('agent');
}
或者你也可以在路由中添加中间件,
Route::group(['middleware' => 'admin'], function () {
//Some route here
});