我正在使用预先设计的架构为预先存在的Web应用程序创建应用程序。此应用程序将使用admins
表对用户进行身份验证(只有管理员才能访问此应用程序)。我不能使用users
表,因为它具有应用程序客户端的数据,并且不一定需要身份验证,因为该应用程序仅由管理员使用。
我使用字段User
创建了protected $table = 'admins'
模型。为了使用Laravel的内置身份验证库,我通过迁移admin
,email
和{{1}等身份验证所需的字段,在password
表中创建了必需的列。 }。我的remember_token
模型如下:
User
我的路线如下:
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable, HasRoles;
protected $table = "admin";
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
}
当用户成功通过身份验证后,默认 Route::get('/dashboard' , 'DashboardController@index')->name('dashboard.index')->middleware('auth');
会重定向到路由LoginController
。但/dashboard
中间件似乎存在一些问题,似乎无法验证当前登录用户是否输入auth
。
此外,我想告诉您,我没有对警卫密钥中的/dashboard
文件进行任何更改,因为config/auth
模型指向具有所有必要条件的User
表用于认证的字段如下:
admins
现在,每当我尝试使用 'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
],
访问/dashboard
或任何其他路由时,应用程序都会将我发送到登录页面。由于登录页面将重定向到仪表板(具有auth middleware
),即使我传递了正确的凭据,即auth middleware
,我也会被重定向到登录页面。
请注意我通过调试检查了提供的凭据的身份验证,并且控制器成功验证了提供的凭据。(我在email and password
方法的authenticated()
方法中进行了检查那个Laravel的AuthenticatesUsers
个用户。如果这个方法不适合检查用户是否经过身份验证,请通知我。
LoginController
是否存在问题,或者我需要修改auth middleware
中的guards configuration
?
或者,我是否需要重新迁移管理表的迁移文件?
请提出最佳选择。谢谢..
答案 0 :(得分:0)
如果您更改“网络”上的提供商,也许可以警惕&#39;管理员&#39;由于默认为&#39;用户&#39;