Laravel 10中间件中Auth::check返回false问题求助
Laravel 10 中间件内 Auth::check() 返回 false 问题求助
已查阅25个StackOverflow问题、解决方案及相关博客,还观看多个Youtube视频,仍未解决Laravel 10项目中中间件内Auth::guard('Registrationform')->check()返回false的问题,多次尝试无果,恳请帮助。以下是相关代码及配置:
Auth配置文件
'defaults' => [ 'guard' => 'web', // 'guard' => 'Registrationform', 'passwords' => 'users' ], 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'Registrationform' => [ // 'redirectTo'=>'index', 'driver' => 'session', 'provider' => 'Registrationforms', ], ], 'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\Models\User::class, ], 'Registrationforms' => [ 'driver' => 'eloquent', 'model' => App\Models\Registrationform::class, ],'
控制器文件
public function login(){ // if(Auth::guard('Registrationform')->user()){ // return redirect()->route('dashboard'); // } return view('login'); } public function authenticate(Request $request):RedirectResponse{ $request->validate([ 'email' => 'required', 'password' => 'required', ]); $credentials = $request->only('email', 'password'); if(Auth::guard('Registrationform')->attempt($credentials)){ $request->session()->regenerate(); $request->session()->put('user',$credentials['email']); return redirect()->intended('index'); } return redirect()->route("login")->withSuccess('Oppes! You have entered invalid credentials'); } public function index():View { dd(Auth::guard('Registrationform')->check()); }
中间件文件
public function handle(Request $request, Closure $next): Response{ dd(\Auth::guard('Registrationform')->check()); }
模型文件
class RegistrationForm extends Authenticatable{ use HasApiTokens, HasFactory, Notifiable; protected $table = 'registrationforms'; protected $guard = 'Registrationform'; protected $primarykey = 'User_ID'; protected $fillable = ['First_Name','Last_Name','email','email_confirmation','password', 'password_confirmation','Gender','birthday_day','birthday_month', 'birthday_month','birthday_year','UserName']; // public $timestamps = false; protected $hidden = [ 'password','password_confirmation' ]; }
路由配置
Route::post('/register', [Registrationcontroller::class,'store']); Route::post('/authenticate', [Registrationcontroller::class, 'authenticate']); Route::middleware(registrationform::class)->group(function(){ Route::get('/login',[Registrationcontroller::class, 'login'])->name('login'); Route::get('/register', [Registrationcontroller::class,'register'])->name('register'); Route::get('/index', [Registrationcontroller::class,'index'])->name('index'); Route::get('/dashboard', [Registrationcontroller::class,'dashboard'])->name('dashboard'); }); Route::post("/logout",[Registrationcontroller::class,'logout'])->name("logout");
Kernel配置
protected $middleware = [ // \App\Http\Middleware\TrustHosts::class, \App\Http\Middleware\TrustProxies::class, \Illuminate\Http\Middleware\HandleCors::class, \App\Http\Middleware\PreventRequestsDuringMaintenance::class, \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, \App\Http\Middleware\TrimStrings::class, \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, \Illuminate\Session\Middleware\StartSession::class, ]; /** * The application's route middleware groups. * * @var array<string, array<int, class-string|string>> */ protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, ], 'api' => [ // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, \Illuminate\Routing\Middleware\ThrottleRequests::class.':api', \Illuminate\Routing\Middleware\SubstituteBindings::class, ], ]; /** * The application's middleware aliases. * * Aliases may be used instead of class names to conveniently assign middleware * to routes and groups. * * @var array<string, class-string|string> */ protected $middlewareAliases = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class, 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, 'signed' => \App\Http\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, 'Registrationform' => \App\Http\Middleware\registrationform::class, ];
注意事项
- 已将
StartSession::class从middlewareGroups的web组移至全局middleware中; - 使用
use Auth替代Illuminate\Support\Facades\Auth; - 可通过AnyDesk协助排查问题。
内容的提问来源于stack exchange,提问作者Abdul Aziz
相关产品推荐
相关产品推荐

