kbwebs / multiauth
Laravel 5.1 的 MultiAuth
Requires
- php: >=5.5.9
- illuminate/auth: ~5.1
- illuminate/console: ~5.1
- illuminate/database: ~5.1
- illuminate/filesystem: ~5.1
- illuminate/support: ~5.1
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 中定义的内容。