Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 中间件(';auth';)不';更改默认身份验证表时无法工作_Laravel_Authentication_Middleware_Laravel Middleware_Laravel 8 - Fatal编程技术网

Laravel 中间件(';auth';)不';更改默认身份验证表时无法工作

Laravel 中间件(';auth';)不';更改默认身份验证表时无法工作,laravel,authentication,middleware,laravel-middleware,laravel-8,Laravel,Authentication,Middleware,Laravel Middleware,Laravel 8,因此,我更改了config/auth.php,将默认auth表从user更改为accounts,如下所示: 'defaults' => [ 'guard' => 'web', 'passwords' => 'accounts', ], 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'accounts', ],

因此,我更改了config/auth.php,将默认auth表从user更改为accounts,如下所示:

'defaults' => [
    'guard' => 'web',
    'passwords' => 'accounts',
],
'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'accounts',
    ],

    'api' => [
        'driver' => 'token',
        'provider' => 'accounts',
        'hash' => false,
    ],
],
'providers' => [
    'accounts' => [
        'driver' => 'eloquent',
        'model' => App\Akun::class,
    ],

],
我已将App\Akun模型配置更改为与App\User模型相同:

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class Akun extends Authenticatable
{
use HasFactory;
protected $table = 'accounts';

protected $fillable = [
    'nip',
    'password',
];

protected $hidden = [
    'password',
    'remember_token',
];
protected $casts = [
    'email_verified_at' => 'datetime',
];
}
我的登录系统也在工作。如果NIP或密码错误,它可以返回,并给出错误消息。这里是我的登录代码:

function checklogin(Request $request){
    $this->validate($request,[
        'nip'   => 'required',
        'password'  => 'required'
    ]);
    $akun_data = array(
        'nip' =>  $request->get('nip'),
        'password'  =>  $request->get('password')
    );
    if(Auth::attempt($akun_data)){
        return redirect('login/successlogin');
    }else{
        return back()->with('pesan','NIP atau Password salah');
    }
}
它工作正常,返回到login/successlogin并在其中运行代码。但当我尝试将中间件(“auth”)添加到登录/成功登录的路径时,即使我给出了正确的nip和密码,它也会返回到登录页面

Route::get('/login/successlogin',[LoginController::class, 'successlogin'])->middleware('auth');

您只需为您的accounts表添加一个新的guard,并将其称为“accounts”,然后在您的路由中,即您可以按guard提供路由分组,即

Route::middleware('auth:accounts')->group(函数(){…其他受保护的路由…});

我已经解决了这个问题,我更改默认身份验证表的方法是正确的。但我忘了在那里添加id列。只需在新的默认身份验证表迁移中添加此代码

$table->id();

我已经添加了“'accounts'=>['driver'=>'session','provider'=>'accounts',]”和
Route::middleware('auth:accounts')->group(函数(){Route::get('/login/successlogin',[LoginController::class,'successlogin']);)但仍然返回到登录页面。