如何解决当我更改默认身份验证表时,中间件'auth'不起作用
所以我更改了config / auth.php,将默认身份验证表从用户更改为这样的帐户:
'defaults' => [
'guard' => 'web','passwords' => 'accounts',],'guards' => [
'web' => [
'driver' => 'session','provider' => 'accounts','api' => [
'driver' => 'token','hash' => false,'providers' => [
'accounts' => [
'driver' => 'eloquent','model' => App\Akun::class,
我已经更改了App \ Akun Model配置,与App \ User Model相同:
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');
}
}
它正在工作,可以正确返回登录名/成功登录并在其中运行代码。但是,当我尝试将中间件('auth')添加到login / succeslogin路由时,即使我提供了正确的nip和密码,它也总是返回到登录页面
Route::get('/login/successlogin',[LoginController::class,'successlogin'])->middleware('auth');
解决方法
您可以只添加一个新的用于您的帐户表的防护,并将其称为“帐户”,然后在您的路线中,即可以按防护提供路线分组,即
Route::middleware('auth:accounts')->group(function () { ...other protected routes... });
,
我已经解决了这个问题,更改默认身份验证表的方式是正确的。但是我忘了在那儿添加id列。只需在您的“新的默认身份验证表迁移”中添加此代码
$table->id();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。