限制特定用户角色laravel的网址

时间:2018-10-16 03:20:27

标签: php laravel

我有3个用户角色:管理员,客户和员工。

登录后,每个角色将被重定向到特定的仪表板,例如:  -管理员:website.com/admin  -客户:website.com/customer  -员工:site.com/employee

这时,无论我使用的是哪个用户角色,都可以通过这些URL进行访问。

限制客户打开管理员和员工仪表板的最简单方法是什么?并限制员工打开管理员和客户仪表板?

Laravel 5.2.45版 PHP 7.2版 我正在使用共享的托管服务提供商。谢谢

2 个答案:

答案 0 :(得分:0)

尝试阅读这篇文章,非常有帮助

https://laravel.com/docs/5.7/middleware#assigning-middleware-to-routes

您可以分配现有的中间件,例如authauth.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);
    }