如何在 Laravel 中实施基于角色的身份验证和访问控制
How to implements Role based Authentication and Access Control in Laravel
我想使用 laravel 创建具有访问权限的基于角色的登录。我想在没有任何第三方库的情况下开发它。我怎样才能以最好和有效的方式开发它。
这是我对管理员和代理角色的访问控制的实现(根据您的用例进行调整)。
我的用户 table(is_admin
) 中有一个布尔字段,对于代理是 0
,对于管理员是 1。所以在我的User model
中我做了这个
protected $casts = [
'is_admin' => 'boolean',
];
public function isAdmin()
{
return $this->is_admin;
}
为您想要使用的角色类型创建一个新的middleware
$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('/admin');
}
之后用 laravel 注册你的中间件。
为此,请将此添加到位于 app\Http\Kernel.php
的 Kernel.php
中的 $routeMiddleware
'admin' => 'App\Http\Middleware\Admin',
'agent' => 'App\Http\Middleware\Agent',
确保创建正确的重定向路由,正如我们在中间件文件中提到的那样。
在这之后你就差不多完成了。
现在要验证用户是管理员还是普通用户,请将其添加到 controller
.
的构造方法中
只允许管理员执行的操作,
public function __construct()
{
$this->middleware('admin');
}
仅允许代理人执行的操作,
public function __construct()
{
$this->middleware('agent');
}
就是这样,现在您在您的应用程序中拥有管理员和代理角色,您可以通过使用他们各自的中间件来控制对他们每个人的访问!
我想使用 laravel 创建具有访问权限的基于角色的登录。我想在没有任何第三方库的情况下开发它。我怎样才能以最好和有效的方式开发它。
这是我对管理员和代理角色的访问控制的实现(根据您的用例进行调整)。
我的用户 table(is_admin
) 中有一个布尔字段,对于代理是 0
,对于管理员是 1。所以在我的User model
中我做了这个
protected $casts = [
'is_admin' => 'boolean',
];
public function isAdmin()
{
return $this->is_admin;
}
为您想要使用的角色类型创建一个新的middleware
$php artisan make:middleware Admin
$php artisan make:middleware Agent
中间件文件将在 App\Http\Middleware 中创建\将其添加到 Admin.php
中的 classpublic 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('/admin');
}
之后用 laravel 注册你的中间件。
为此,请将此添加到位于 app\Http\Kernel.php
Kernel.php
中的 $routeMiddleware
'admin' => 'App\Http\Middleware\Admin',
'agent' => 'App\Http\Middleware\Agent',
确保创建正确的重定向路由,正如我们在中间件文件中提到的那样。 在这之后你就差不多完成了。
现在要验证用户是管理员还是普通用户,请将其添加到 controller
.
只允许管理员执行的操作,
public function __construct()
{
$this->middleware('admin');
}
仅允许代理人执行的操作,
public function __construct()
{
$this->middleware('agent');
}
就是这样,现在您在您的应用程序中拥有管理员和代理角色,您可以通过使用他们各自的中间件来控制对他们每个人的访问!