如何使用中间件来区分普通用户和管理员

时间:2018-01-16 05:12:14

标签: laravel-5.5

我已经创建了一个中间件,这个中间件的目的是区分管理员和普通用户,但无论用户或管理员将其重定向到同一页面并且我的条件不起作用并且我正在使用普通用户和管理员的同一个表。我正在使用laravel 5.5。

if (Auth::user() && Auth::user()->isAdmin == 1) {
    return $next($request);
}
return redirect()->action('HomeController@index');

2 个答案:

答案 0 :(得分:0)

好的按照我的指南

  1. 在您的终端中运行此评论“确保cd to ur project”
  2.   

    php artisan make:中间件IsAdmin

    1. 编辑isAdmin文件

      公共函数句柄($ request,Closure $ next) {  if(Auth :: user()&& Auth :: user() - > admin == 1){         return $ next($ request);  }

      返回重定向('/'); }

    2. 通过打开app / Http / Kernel.php将其添加到内核文件中的routeMiddleware数组

      'admin'=> \ APP \ HTTP \中间件\ IsAdmin ::类,

    3. 将中间件应用到您的路线

      Route :: get('admin_area',['middleware'=>'admin',function(){ // }]);

    4. 跳这是适合你的

答案 1 :(得分:0)

开放中间件-> RedirectIfAuthenticated.php

1。删除此代码:

public function handle($request, Closure $next, $guard = null) {
    if (Auth::guard($guard)->check()) {
        return redirect('/home');
    }

2。复制/粘贴此

public function handle($request, Closure $next, $guard = null) {
    if (Auth::guard($guard)->check()) {
        return redirect('/home');
    }else{
        return redirect()->action('AdminController@login')->with('flash_message_error','Please login to access');
    }
    return $next($request);
}
}