2014-10-16 30 views
0

我使用Laravel創建應用程序,Laravel登錄認證的問題,我用「管理員」表來存儲管理員,如何登錄爲管理員進行身份驗證,不同命名的表

我做了這樣的用戶的「用戶」表驗證,

$input = Input::all(); 

$rules = array('email' => 'required|email', 'password' => 'required'); 
$v = Validator::make($input, $rules); 

if ($v->fails()) { 
    return Redirect::to('login')->withErrors($v); 
} else { 
    $user_email = $input['email']; 
    $user_password = $input['password']; 
    $credentials = array('email' => $user_email, 'password' => $user_password); 

    if (Auth::attempt($credentials)) { 
     return Redirect::to('dashboard'); 
    } else { 
     return Redirect::to('login') 
         ->with('global', 'Please Register First'); 
    } 
} 

但如何使用這個「管理員」表認證。

+0

[使用2個不同表的身份驗證](http:// stackoverflow。com/questions/18785754/authentication-with-2-different-tables) – 2014-10-16 10:38:14

+0

對於所有用戶(稱爲管理員而不是默認用戶)是否使用單個表,還是嘗試在網站的兩個部分中實施auth一個使用默認用戶的東西,另一個使用管理員)? – alexrussell 2014-10-16 10:57:23

回答

0

以下答案假設您只需使用正常Laravel身份驗證(users)的不同表(administrators)。如果情況是,您需要以兩種不同的方式爲網站的不同部分實施auth,那麼您需要一種允許這樣做的方法。這可以通過使用Laravel的Guard系統來實現,但您最好使用專門爲此案例構建的第三方系統。


默認情況下,Laravel 4的認證系統設置爲使用雄辯的司機與一個叫User模型。因此,您需要有可用的型號。一個User模型與Laravel預先安裝它是好的。對您而言,'問題'是默認情況下,模型名稱User將與數據庫中名爲users的表綁定。

幸運的是,Laravel的認證系統是非常可配置的,並且有兩種方法默認使用數據庫進行認證(直接訪問數據庫或使用Eloquent模型),兩者都可以自行配置(哪個表,哪個模型)。所有這些都應該在您的app/config/auth.php文件中找到。 driver可以是databaseeloquent,然後根據您指定的驅動程序更改tablemodel

因此,也有在這裏您的問題三個方面:

  • 如果您不需要使用模型,你可以簡單地改變駕駛員database並指定administrators表。
  • 如果你仍然想使用一個模型:
    • 如果你想繼續使用默認User模型,並把它稱爲User在你的代碼,你可以告訴雄辯看administrators該模型的表格:將protected $table = 'administrators';添加到User類別定義中。
    • 如果你喜歡使用一個名爲Administrator模式,你將不會被使用User模型,然後只需將User模型重命名爲Administrator,並在你的AUTH配置改變雄辯模型Administrator

我的建議將是最後的那三個選項,因爲它是最好的代碼。你正在使用一個模型,這對你來說可能會更好一些,但是你並不想竊聽現有的模型來使用不同的表格。