splendex/multiauth

Firebird 的 Laravel 5.1 MultiAuth 分支

dev-master 2017-01-12 16:49 UTC

This package is not auto-updated.

Last update: 2024-09-23 14:13:13 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

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

它将匹配以下路由

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

提示

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