不同命名表的Laravel登录身份验证问题

不同命名表的Laravel登录身份验证问题,laravel,laravel-4,Laravel,Laravel 4,我正在使用Laravel创建应用程序,我使用administrators表存储管理员,如何为管理员登录和验证 我对用户表进行了身份验证,如下所示 $input = Input::all(); $rules = array('email' => 'required|email', 'password' => 'required'); $v = Validator::make($input, $rules); if ($v->fails()) { return Redi

我正在使用Laravel创建应用程序,我使用administrators表存储管理员,如何为管理员登录和验证

我对用户表进行了身份验证,如下所示

$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');
    }
}

但如何将其用于管理员表身份验证

下面的答案假设您只需要为普通Laravel auth用户使用不同的表管理员。如果您需要为站点的不同部分以两种不同的方式实现auth,那么您需要一种允许这种方式的方法。这可以通过使用Laravel的Guard系统来实现,但您最好使用专门为这种情况构建的第三方系统

默认情况下,Laravel4的身份验证系统设置为将雄辩的驱动程序与名为User的模型一起使用。因此,您需要提供该模型。用户模型预装了Laravel s,一切都很好。您的“问题”是,默认情况下,模型名用户将绑定到数据库中名为users的表

幸运的是,Laravel的auth系统是非常可配置的,有两种方法可以使用数据库进行身份验证,默认情况下直接数据库访问或使用雄辩的模型,这两种方法都可以在各自的哪个表、哪个模型中进行配置。所有这些都应该在app/config/auth.php文件中找到。驱动程序可以是数据库驱动程序,也可以是有说服力的驱动程序,然后根据指定的驱动程序更改表或模型

因此,有三种方法解决您的问题:

如果不需要使用模型,只需将驱动程序更改为数据库并指定administrators表即可。 如果您仍然希望使用模型: 如果您想继续使用默认的用户模型,并在代码中将其称为用户,您可以告诉Eloquent查看该模型的管理员表:addprotected$table='administrators';到用户类定义。 如果您希望使用名为Administrator的模型,而不使用用户模型,则只需将用户模型重命名为Administrator,并将auth配置中的Elounce模型更改为Administrator。
我的建议将是这三个选项中的最后一个,因为它对代码来说是最好的。你使用的是一个模型,这可能对你整体来说会更好,但是,您并不是在对现有模型进行黑客攻击以使用不同的表。

的可能重复项您是否为所有名为administrators的用户使用一个表,而不是默认的users,或者您是否尝试在站点的两个部分实现auth—一个使用默认users,另一个不使用administrators?