wuifdesign/laravel-multiauth

此包已被弃用且不再维护。未建议替代包。

Laravel 多认证集成

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

This package is not auto-updated.

Last update: 2020-02-07 16:12:04 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,
    ),

);

并将前三个选项(driver、model、table)替换为以下内容

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_key 或默认值(如果您在路由中没有设置它),请使用

Auth::currentType();

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

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