所以我更改了config/auth.php,将默认身份验证表从用户更改为如下帐户:
'defaults' => [
'guard' => 'web',
'passwords' => 'accounts',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'accounts',
],
'api' => [
'driver' => 'token',
'provider' => 'accounts',
'hash' => false,
],
],
'providers' => [
'accounts' => [
'driver' => 'eloquent',
'model' => AppAkun::class,
],
],
我已将App\Akun型号配置更改为App\用户型号:
use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateFoundationAuthUser as Authenticatable;
use IlluminateNotificationsNotifiable;
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"(添加到登录/成功登录的路径时,即使我给出了正确的密码和密码,它也总是会返回到登录页面
Route::get('/login/successlogin',[LoginController::class, 'successlogin'])->middleware('auth');
您只需为您的账户表添加一个新的保护,并将其称为"账户",然后在您的路线中,即您可以按保护提供路线分组,即
Route::middleware('auth:accounts')->group(function () { ...other protected routes... });
我已经解决了这个问题,我更改默认身份验证表的方法是正确的。但我忘了在那里添加id栏。只需在新的默认身份验证表迁移中添加此代码
$table->id();