laravel 前后台分别登录,互不影响

该标题的意思即: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 应用程序中使用自己的身份验证系统来管理不同类型的用户。

参考文章:

https://sagardhiman021.medium.com/exploring-multi-authentication-in-laravel-a-step-by-step-guide-to-implementation-edd3bf304fce

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注