2015-03-13 109 views
1

我想知道是否有更好的方式來處理我的身份驗證用戶在不同類型的用戶方面的方式。在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,我想有一種不同的方式可以處理這個問題。

+0

@Lunx如果你滿意我的回答如下,接受它:) – 2015-03-20 13:04:28

+0

對此深感抱歉隊友!這實際上工作,我能夠用你的指導來解決我的問題! – Lynx 2015-03-21 03:26:44

回答

3

處理用戶角色的最佳方法是使用Middleware

  1. 創建中間件:
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); 
    } 
} 
  • 它添加到app\Http\Kernel.php
  • protected $routeMiddleware = [ 
        'admin' => 'App\Http\Middleware\Admin', 
    ]; 
    
  • 使用middl eware在您的路線:
  • Route::group(['middleware' => ['admin']], function() { 
        // your route 
    });