如何在不同的表中使用laravel的Auth类?

时间:2015-09-17 08:59:02

标签: php laravel

我在页面中创建了一个简单的登录和注册,并在默认的users表中添加了一些新列。现在我的问题是我有另一个名为admin的表,默认的Laravel的Auth表是users。如何在表格中实现相同的功能?

在Users模型中,它具有表名

的声明
   protected $table = 'users';

您能举例说明如何使用默认的laravel' auth类吗?

谢谢,谢谢。 : - )

3 个答案:

答案 0 :(得分:3)

您是否听说过Multiauth in laravel。在这个库中有两个或更多类型的用户可以在一个laravel应用程序中登录。在我们的例子中,有两种类型的用户Admin和Public表示用户权限。

忘记密码和重置密码功能都可以在一个应用程序中单独使用。

安装完成后,这个库有如下步骤。

'multi' => [ 'admin' => [ 'driver' => 'database', 'table' => 'admin', 'email' => 'client.emails.password' ], 'users' => [ 'driver' => 'database', 'table' => 'users', 'email' => 'client.emails.password', ] ],

使用此文件更改您的Auth.php文件代码。

<强>安装

首先,您希望将此包包含在composer.json文件中。

 "require": {
        "sboo/multiauth" : "4.0.*"
}

现在您需要通过composer更新或安装。

composer update

<强>用法

所有操作都与原始库完全相同,唯一的例外是所有方法调用都以键(上述示例中的帐户或用户)为前缀作为方法本身。

Auth::admin()->attempt(array(
    'email'     => $attributes['email'],
    'password'  => $attributes['password'],
));
Auth::client()->attempt(array(
    'email'     => $attributes['email'],
    'password'  => $attributes['password'],
));
Auth::admin()->check();
Auth::client()->check();

Here is your library

答案 1 :(得分:2)

Laravel为应用程序提供默认用户表。要更改laravel authentication different table相关表名,我们需要对config的身份验证文件进行一些小改动。

转到

配置/ auth.php

'providers' => [
    // 'users' => [
    //     'driver' => 'eloquent',
    //     'model' => App\User::class,
    // ],
     'users' => [
         'driver' => 'database',
         'table' => 'user',
     ],
],

答案 2 :(得分:0)

我认为最好的方法是复制你的桌子。我将使用角色字段扩展users表,该字段指示用户是标准用户还是管理员。这样,您可以保留相同的代码并添加您要查找的ADMIN功能。

如果你需要这样做并且你使用的是Laravel 4,也许你可以使用这个插件:

https://github.com/ollieread/multiauth/

此线程中还有代码在不同的表中实现Auth:

https://gist.github.com/danielcoimbra/64b779b4d9e522bc3373

但我强烈建议将两个表集成在一个带有Admin标志/字段

的表中