我有3个用户角色:管理员,客户和员工。
登录后,每个角色将重定向到特定的仪表板,例如:- Admin: website.com/admin - Customer: website.com/customer - Employee: website.com/employee
此时,无论我使用的是哪个用户角色,都可以通过这些URL访问所有内容。
限制客户打开管理和员工控制面板的最简单方法是什么?并限制员工打开管理和客户仪表板?
Laravel版本5.2.45 PHP版本7.2我使用的是共享主机提供商。谢谢
发布于 2018-10-16 11:33:14
试着读一下这篇文章,很有帮助
https://laravel.com/docs/5.7/middleware#assigning-middleware-to-routes
您可以指定现有的中间件,如auth或auth.basic
或者像这样传递您自己的check角色类
use App\Http\Middleware\CheckAge;
Route::get('admin/profile', function () {
//
})->middleware(CheckAge::class);发布于 2018-10-17 08:50:33
在您的情况下,我将在您的用户模型中创建一个助手函数,如下所示:
function isAdmin(){
return $this->role == 0;
}我将为每个角色创建一个,然后您可以在视图控制器中使用此函数,例如:
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);
}https://stackoverflow.com/questions/52827510
复制相似问题