2014-10-16 34 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

我的建议将是最后的那三个选项,因为它是最好的代码。你正在使用一个模型,这对你来说可能会更好一些,但是你并不想窃听现有的模型来使用不同的表格。