Laravel:即使提供了正确的凭据,由于auth中间件,成功登录也会重定向到登录页面

时间:2018-04-16 19:25:28

标签: laravel authentication redirect routes middleware

我正在使用预先设计的架构为预先存在的Web应用程序创建应用程序。此应用程序将使用admins表对用户进行身份验证(只有管理员才能访问此应用程序)。我不能使用users表,因为它具有应用程序客户端的数据,并且不一定需要身份验证,因为该应用程序仅由管理员使用。

我使用字段User创建了protected $table = 'admins'模型。为了使用Laravel的内置身份验证库,我通过迁移adminemail和{{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

或者,我是否需要重新迁移管理表的迁移文件?

请提出最佳选择。谢谢..

1 个答案:

答案 0 :(得分:0)

如果您更改“网络”上的提供商,也许可以警惕&#39;管理员&#39;由于默认为&#39;用户&#39;