在 Laravel 中,如果你想要使用除了默认的 users
表之外的其他用户表来进行身份验证,可以通过以下步骤进行设置:
-
创建新的用户模型:
首先,创建一个新的用户模型,例如
Admin
,继承自Illuminate\Foundation\Auth\User
。namespace App; use Illuminate\Foundation\Auth\User as Authenticatable; class Admin extends Authenticatable { // 定义与数据库表对应的表名 protected $table = 'admins'; // 其他属性和方法 }
-
配置认证配置文件:
打开
config/auth.php
配置文件,找到providers
数组,修改为如下配置:'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\Admin::class, // 指定使用的用户模型 ], ],
-
更新认证相关的控制器:
如果你有自定义的认证控制器(如登录、注册等),确保在这些控制器中使用新的模型进行验证。
use Illuminate\Support\Facades\Auth; // 使用 Admin 模型进行认证 if (Auth::guard('web')->attempt($credentials)) { // 认证成功 }
-
生成视图和路由:
如果你需要生成登录、注册等视图,可以使用 Laravel UI 包来生成对应的视图和路由。
php artisan ui vue --auth
这个命令会生成基本的身份验证视图和路由,但是你可能需要自行修改这些视图,以适应你的自定义用户表结构和字段。
-
数据库迁移:
确保你的数据库迁移文件中,创建了对应的
admins
表,并在模型中正确定义了表名和字段。运行迁移命令来创建数据库表:php artisan migrate
通过以上步骤,你可以在 Laravel 中成功地使用自定义的用户表进行身份验证。记得根据实际情况修改和适应你的数据库表结构和业务需求。
Auth::attempt成功之后 在其他地方获取不到的原因:
查看 app/Providers/RouteServiceProvider.php 你使用的中间件是什么
再去app/Http/Kernel.php 看你的中间件有没有使用
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Session\Middleware\StartSession::class,
这两个默认一般不使用 加上就好了
验证登录失败跳转 默认路由是login
Route::any(‘admins/login_auth’, [AdminsController::class, ‘loginAuth’])->name (‘admins.login_auth’);
主要修改的是 name里边的参数
想要更改 在app/Http/Middleware/Authenticate.php