kbwebs/multiauth

此包已被废弃,不再维护。未建议替代包。

Laravel 5.1 的 MultiAuth

v1.0 2015-09-12 08:04 UTC

This package is not auto-updated.

Last update: 2022-06-28 21:34:35 UTC


README

安装

首先,通过 Composer 拉取此包。

"require": {
    "kbwebs/multiauth": "~1.0"
}

现在您可以通过 composer 更新或安装。

composer update

认证

打开 config/app.php 文件,将 AuthServiceProvider 替换为

Illuminate\Auth\AuthServiceProvider::class -> Kbwebs\MultiAuth\AuthServiceProvider::class

然后打开 config/auth.php 文件,删除

'driver'  => 'eloquent'
'model'   => App\User::class,
'table'   => 'users'

并将其替换为以下数组

'multi-auth' => [
    'admin' => [
        'driver' => 'eloquent',
        'model'  => App\Admin::class
    ],
    'user' => [
        'driver' => 'eloquent',
        'model'  => App\User::class
    ]
]

如果您想使用数据库而不是 Eloquent,可以使用它作为

'user' => [
    'driver' => 'database',
    'table'  => 'users'
]

密码重置

打开 config/app.php 文件,将 PasswordResetServiceProvider 替换为

Illuminate\Auth\Passwords\PasswordResetServiceProvider::class -> Kbwebs\MultiAuth\PasswordResets\PasswordResetServiceProvider::class

如果您想使用此包中的密码重置功能,需要在每个使用密码重置的模型中更改以下内容

use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;

use Kbwebs\MultiAuth\PasswordResets\CanResetPassword;
use Kbwebs\MultiAuth\PasswordResets\Contracts\CanResetPassword as CanResetPasswordContract;

如果您想更改每种认证类型的密码重置视图,可以将其添加到 config/auth.php 中的 multi-auth 数组

'email' => 'emails.users.password'

如果您不添加此行,Laravel 将自动使用默认路径 emails.password,如 password 数组中定义的那样。

要生成密码重置表,您需要运行以下命令

php artisan kbwebs:multi-auth:create-resets-table

同样,如果您想清除所有密码重置,您必须运行以下命令

php artisan kbwebs:multi-auth:clear-resets

注意 替换默认服务提供者是至关重要的。如果您不希望使用密码重置,请删除原始的密码重置服务提供程序,否则会导致错误。

用法

认证

它的工作方式与原始 Laravel 认证库相同,唯一的区别是 user()admin() 将匹配您在 multi-auth 数组中定义的认证类型

Auth::attempt(['email' => $email, 'password' => $password], $remember)

但现在它必须像这样,使用 user()admin()

Auth::user()->attempt(['email' => $email, 'password' => $password], $remember)

如果您想访问认证用户的详细信息,可以这样做

Auth::user()->get();

Auth::user()->get()->email

密码重置

它的工作方式与原始 Laravel 认证库相同,唯一的区别是 user()admin() 将匹配您在 multi-auth 数组中定义的认证类型

Password::sendResetLink($request->only('email'), function (Message $message) {
    $message->subject($this->getEmailSubject());
});

但现在它必须像这样,使用 user()admin()

Password::user()->sendResetLink($request->only('email'), function (Message $message) {
    $message->subject($this->getEmailSubject());
});

密码重置电子邮件示例

Click here to reset your password: {{ URL::to('password/reset', array($type, $token)) }}.

这会生成类似以下 URL 的 URL

http://example.com/password/reset/user/21eb8ee5fe666r3b8d0521156bbf53266bnca572

这将匹配以下路由

Route::get('password/reset/{type}/{token}', 'Controller@method');

提示

请记住更新所有使用 Auth:: 的地方,例如:Auth::user() 或在 config/auth.php 中定义的内容。