该标题的意思即:Laravel 中的多重身份验证,简化了一下标题,让人能看懂。
在 Laravel 中,“多重身份验证”(也称为“多重保护身份验证”)是指在单个应用程序中管理多个用户身份验证系统的能力。当您有不同类型的用户(例如普通用户和管理员)且每个用户都有自己的身份验证要求和用户模型时,这非常有用。
要在 Laravel 中实现多重身份验证,您通常需要遵循以下步骤:
第 1 步:创建多个用户模型:
为要验证的每种类型的用户创建单独的用户模型。例如,您可能有一个User针对普通用户的模型和一个Admin针对管理员的模型。您可以使用以下artisan命令生成这些模型:
php artisan make:model User
php artisan make:model Admin
注意:这一步可以省略,完全可以都用User表。
步骤 2:配置身份验证防护:
在config/auth.php文件中,定义多个防护(guard),每个防护与一个用户模型关联。Laravel 允许您为每个守卫配置不同的身份验证驱动程序。例如,您可以将“web”防护用于具有基于会话的身份验证的普通用户,将“admin”防护用于具有基于会话或基于令牌的身份验证的管理员。
下面是一个简化的文件示例config/auth.php:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
],
第 3 步:定义身份验证提供程序:
为每个用户模型配置身份验证提供程序。提供者决定 Laravel 应在何处检索用户记录。在同一config/auth.php文件中,为指定相应 Eloquent 模型的“users”和“admins”定义提供程序:
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
'admins' => [
'driver' => 'eloquent',
'model' => App\Models\Admin::class,
],
],
第 4 步:实施身份验证逻辑:
在你的应用程序中,根据所选的防护实现身份验证逻辑。你可以使用auth()辅助方法来访问所需的防护:
// Authenticate a regular user
if (auth()->guard('web')->attempt(['email' => $email, 'password' => $password])) {
// User is logged in
}
// Authenticate an administrator
if (auth()->guard('admin')->attempt(['email' => $email, 'password' => $password])) {
// Admin is logged in
}
第 5 步:保护路由:
使用中间件根据所选的防护来保护路由。例如,您可以应用“auth:web”中间件来保护普通用户的路由,使用“auth:admin”中间件来保护管理员的路由:
Route::middleware(['auth:web'])->group(function () {
// Routes accessible to regular users
});
Route::middleware(['auth:admin'])->group(function () {
// Routes accessible to administrators
});
第 6 步:注销:
要注销用户,可以logout在相应的守卫上使用该方法:
auth()->guard('web')->logout(); // Log out a regular user
auth()->guard('admin')->logout(); // Log out an administrator
结论:
这就是 Laravel 中实现多重身份验证的基本流程。你可以创建多个用户模型(或者只用User模型),配置防护和提供程序,实施身份验证逻辑,并根据所选防护保护路由。这允许你在单个 Laravel 应用程序中使用自己的身份验证系统来管理不同类型的用户。
参考文章:
发表回复