在Laravel 5中有两种类型的用户

时间:2015-03-13 19:08:12

标签: php laravel laravel-5

我想知道是否有更好的方法来处理我的身份验证用户如何处理不同类型的用户。

我有一个基本用户和一个管理员用户。基本用户显然只能访问基本页面,管理员用户需要访问基本用户无法访问的其他页面。

我一直在做的是:我在表格中创建了一个super_user列并添加:

    if(Auth::user()->super_user == 0) {
        return Redirect::to('/')->with('error', 'You do not have permission to access this page');
    }

到我不希望基本用户能够访问的每个页面。现在,这有效,但我开始将我的应用程序转换到Laravel 5,我认为我可以采用不同的方式处理这个问题。

1 个答案:

答案 0 :(得分:3)

处理用户角色的最佳方法是使用Middleware

  1. 创建中间件:
  2. namespace App\Http\Middleware;
    
    use Closure;
    use Illuminate\Contracts\Auth\Guard;
    
    class Admin
    {
        /**
         * The Guard implementation.
         *
         * @var Guard
         */
        protected $auth;
    
        /**
         * Create a new filter instance.
         *
         * @param  Guard  $auth
         * @return void
         */
        public function __construct(Guard $auth)
        {
            $this->auth = $auth;
        }
    
        /**
         * Handle an incoming request.
         *
         * @param  \Illuminate\Http\Request  $request
         * @param  \Closure  $next
         * @return mixed
         */
        public function handle($request, Closure $next)
        {
            if (!$this->auth->getUser()->super_user) {
                return redirect->to('/')
                    ->with('error', 'You do not have permission to access this page');
                }
            }
    
            return $next($request);
        }
    }
    
    1. 将其添加到app\Http\Kernel.php
    2. protected $routeMiddleware = [
          'admin' => 'App\Http\Middleware\Admin',
      ];
      
      1. 在路线中使用中间件:
      2. Route::group(['middleware' => ['admin']], function() {
            // your route
        });