我想使用laravel创建具有访问权限的基于角色的登录。我想在没有任何第三方库的情况下开发它。我怎样才能最好,最有效地开发它。
答案 0 :(得分:0)
以下是我对admin和Agent角色的访问控制的实现(根据您的使用情况调整此选项)。
我的用户表(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中的类
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注册您的中间件。
为此,请将此添加到位于$routeMiddleware
的{{1}}的{{1}}
Kernel.php
确保为我们在中间件文件中提到的重定向创建正确的路由。 在此之后你几乎完成了。
现在验证用户是管理员还是普通用户将此添加到app\Http\Kernel.php
的构造函数方法。
仅允许管理员执行操作
'admin' => 'App\Http\Middleware\Admin',
'agent' => 'App\Http\Middleware\Agent',
仅允许代理人采取行动,
controller
现在你的应用程序中有管理员和代理角色,你可以使用他们各自的中间件来控制每个人的访问权限!