Laravel10 Auth 多用户(管理员、用户的区分)

发布时间 2023-05-09 09:55:56作者: 夏秋初

参考

环境

软件/系统 版本 说明
windows 10
php 8.1.9-Win32-vs16-x64
composer 2.5.5
laravel 10.8.0
mysql 8.0.28

注意

如果需要使用密码功能,还需要在 config\auth.php 配置 passwords 数组,在自定义的如管理员表中还需要添加 remember_token 字段(记住我功能)。

备注

上一篇文章介绍了如何使用 Laravel 的 AuthLaravel10 API 简单使用 Auth 生成 Token 与登录并获取用户信息,本文在原文配置的基础上进行学习 Auth 的多用户登录的使用。

前置工作

其中 1-4 步骤是 《 Laravel10 API 简单使用 Auth 生成 Token 与登录并获取用户信息 》一文中已有步骤,为了文章整体流畅复制过来的

https://learnku.com/docs/laravel/10.x/sanctummd/14914#installation

  1. 安装 composer require laravel/sanctum
  2. 发布配置与迁移文件 php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
  3. 将 Sanctum 的中间件添加到你的应用程序的 app/Http/Kernel.php 文件中的 api 中间件组中
    'api' => [
    \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,// 这一行
       \Illuminate\Routing\Middleware\ThrottleRequests::class.':api',
       \Illuminate\Routing\Middleware\SubstituteBindings::class,
    ],
    
  4. 数据库迁移 php artisan migrate (需要数据库链接)
  5. 修改 config\auth.php 文件如下
## 38行
'guards' => [
	'web' => [
		'driver' => 'session',
		'provider' => 'users',
	],
	// 新增一个 admin guard,其中 admin_web 名称可以任意自定义,driver 代表储存方式,provider 表示对应处理验证程序
	'admin_web' => [
		'driver' => 'session',
		'provider' => 'admins',
	],
],
# ...
## 约67行左右
'providers' => [
	'users' => [
		'driver' => 'eloquent',
		'model' => App\Models\User::class,
	],
	// 管理员
	'admins' => [
		'driver' => 'eloquent',
		'model' => App\Models\Admin::class,
	]
],

代码


/**
 * 测试
 */
Route::get('{admin}',function(Admin $admin,Request $request){
	## 登录当前用户
    Auth::guard('admin_web')->login($admin);
	## 获取当前登录用户的信息
	dump(Auth::guard('platform_admin_web')->user());
    dump(Auth::guard('platform_admin_web')->user()->createToken("USER_TOKEN"));
});
//