wuifdesign/multiauth

此包已被弃用且不再维护。作者建议使用 wuifdesign/laravel-multiauth 包代替。

Laravel 的 MultiAuth 集成

v0.3.5 2016-01-02 23:04 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:50:21 UTC


README

GitHub release Packagist License

Twitter

Laravel: 5.0, 5.1

此包扩展了默认的 Auth 库,允许使用不同数据库表甚至不同数据库中的账户登录。例如,如果您想将后端和前端用户保存到不同的表中以保持它们分离。

与默认的 Laravel 5 AuthController 和 PasswordController 兼容!

安装

最简单的方法是运行以下命令

composer require wuifdesign/laravel-multiauth

否则,您可以将包包含在您的 composer.json 文件中,

"require": {
    "wuifdesign/laravel-multiauth": "0.3.*"
}

并通过 composer 更新或安装

composer update

现在您需要打开您的 app/config/app.php 并添加

'providers' => [
    ...
    WuifDesign\MultiAuth\ServiceProvider::class
]

配置也很简单,使用具有默认值的 app/config/auth.php

return array(

    'driver' => 'eloquent',
    'model' => 'User',
    'table' => 'users',

    'password' => array(
        'email' => 'emails.password',
        'table' => 'password_reminders',
        'expire' => 60,
    ),

);

并将前三个选项(驱动程序、模型、表)替换为以下内容

return array(

    'default' => 'user',
    'multi' => array(
        'admin' => array(
            'driver' => 'eloquent',
            'model'  => Admins::class,
        ),
        'user' => array(
            'driver' => 'eloquent',
            'model'  => Users::class,
            'password' => [
                'email' => 'users.emails.password',
            ]
        )
    ),

    'password' => array(
        'email' => 'emails.password',
        'table' => 'password_reminders',
        'expire' => 60,
    ),
);

使用方法

所有操作都是通过路由完成的。只需在路由数组中添加一个键 "auth",其值为您在 app/config/auth.php 中使用的键。

Route::get('/', array(
    'uses' => function () {
        return 'Hello World';
    },
    'middleware' => [ 'auth' ],
    'auth' => 'admin',
));

现在,如果您调用 Auth::check() 或其他任何函数,它将使用配置中设置的 "admin" 键的驱动程序和模型。

如果您未在路由中添加 "auth",则将使用在 app/config/auth.php 中定义的 "default" 类型。

如果您想在不同的路由中使用不同的认证方式时检查特定的认证,可以使用 Auth::type($auth_key) 获取所需的认证管理器。

Auth::type('admin')->check();

要获取路由当前使用的认证键或默认值(如果您未在路由中使用),请使用。

Auth::currentType();

如果您想以不同的用户登录,只需使用 Auth::impersonate($id, $auth_key = null, $remember = false)。如果您不指定 auth_key,则将使用通过路由设置的键或默认键。

Auth::impersonate(3, 'admin');