我有3个用户角色:管理员,客户和员工。
登录后,每个角色将被重定向到特定的仪表板,例如: -管理员:website.com/admin -客户:website.com/customer -员工:site.com/employee
这时,无论我使用的是哪个用户角色,都可以通过这些URL进行访问。
限制客户打开管理员和员工仪表板的最简单方法是什么?并限制员工打开管理员和客户仪表板?
Laravel 5.2.45版 PHP 7.2版 我正在使用共享的托管服务提供商。谢谢
答案 0 :(得分:0)
尝试阅读这篇文章,非常有帮助
https://laravel.com/docs/5.7/middleware#assigning-middleware-to-routes
您可以分配现有的中间件,例如auth
或auth.basic
或通过您自己的检查角色类
use App\Http\Middleware\CheckAge;
Route::get('admin/profile', function () {
//
})->middleware(CheckAge::class);
答案 1 :(得分:0)
在您的情况下,我会做些什么,我会在您的用户模型中创建一个辅助函数,例如:
function isAdmin(){
return $this->role == 0;
}
我会为每个角色创建一个,然后您可以在View控制器中使用此功能,例如:
if(auth()->user()->isAdmin()){
return view('admin.dashboard');
}
else{
return view('guest.dashboard');
}
最后,如果您想创建一个中间件来控制对某些路由或控制器的访问,
php artisan make:middleware AdminUser
,然后在handle函数中:
public function handle($request, Closure $next)
{
if (!auth()->user()->isAdmin) {
return redirect('home');
}
return $next($request);
}