php - 多个守卫laravel的user_id冲突
问题描述
我是 Laravel 的新手,我创建了两个守卫“用户守卫”(默认一个)和“管理员守卫”。我将身份验证会话保存在数据库而不是文件中。
现在的问题是用户 ID 导致会话表中的冲突。例如,如果我在 users 表中创建了一个新用户,并且在 admin 表中创建了新的管理员帐户,那么两者在会话表中都将具有相同的 id,并且由于 id 不是唯一的,即使我只是正常登录,它也会自动将我登录到管理员帐户用户。
我已经在 Google 上搜索过,但找不到任何有用的东西。只有这个人问了同样的问题但没有回答: Laravel 中的多会话表
这是我的代码:config/auth.php
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'admins' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
]
],
AdminLoginController.php
if (auth()->guard('admin')->attempt(['email' => $request->email, 'password' => $request->password])) {
$user = auth()->guard('admin')->user();
return redirect()->route('admin');
}
解决方案
管理员可能不应该有单独的表和单独的雄辩模型,因为管理员是用户。他们只是具有提升权限的用户。
与其为管理员创建单独的模型、守卫和提供者,不如考虑将角色和/或权限附加到您的用户模型以跟踪用户是否是管理员。
这是一个很好的包来帮助解决这个问题:https ://github.com/spatie/laravel-permission
推荐阅读
- powershell - 如何从 powershell 脚本本地设置 cosmosdb 模拟器
- python - 即使在睡眠期间,每秒点击次数测试仪也会计算点击次数
- java - 需要访问 Thymleaf 中的简单列表
- react-native - 使用 React Native 进行图像识别
- css - 具有平滑度 css 的背景形状
- python - 傅里叶逆变换不给出初始图像
- excel - VBScript 不会将复制的 Excel 插入特定页面上的 Word
- java - 如何在 Mongock 迁移后启动 Hazelcast?
- r - 从R中的BW图像中删除小形状
- r - 代码独立工作,但不是函数