无法使用具有正确凭据的Laravel登录



您好,我已经很难解决这个问题将近一个星期了。我正试图登录我的Laravel项目,问题是即使电子邮件和密码(在数据库中散列(输入正确,它也无法登录。任何帮助都将不胜感激。以下是我的LoginController.php、login.blade.php和web.php 文件的代码

LoginController.php


namespace AppHttpControllersAuth;
use AppHttpControllersController;
use AppProvidersRouteServiceProvider;
use IlluminateFoundationAuthAuthenticatesUsers;
use IlluminateHttpRequest;
use Auth;
use DB;
use AppModelsDistributor;
use CarbonCarbon;
use Session;
use Brian2694ToastrFacadesToastr;
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = RouteServiceProvider::HOME;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except([
'logout',
'locked',
'unlock'
]);
}
public function login()
{
return view('auth.login');
}
public function username(){ return 'email_address'; 
}

public function authenticate(Request $request)
{
$request->validate([
'email' => 'required|string|email',
'password' => 'required|string',
]);
$email    = $request->email;
$password = $request->password;


if (Auth::attempt(['emailAddress'=>$email,'password'=>$password,])) {

Toastr::success('Login successfully :)','Success');
return redirect()->intended('orders.sellload');
}elseif (Auth::attempt(['emailAddress'=>$email,'password'=>$password])) {

Toastr::success('Login successfully :)','Success');
return redirect()->intended('orders.sellload');
}elseif (Auth::attempt(['emailAddress'=>$email,'password'=>$password,])) {

Toastr::success('Login successfully :)','Success');
return redirect()->intended('admin.distributor');
}
elseif (Auth::attempt(['emailAddress'=>$email,'password'=>$password])) {

Toastr::success('Login successfully :)','Success');
return redirect()->intended('admin.distributor');
}else{
Toastr::error('fail, WRONG USERNAME OR PASSWORD :)','Error');
return redirect('login');
}
}
public function logout()
{
Auth::logout();
Toastr::success('Logout successfully :)','Success');
return redirect('login');
}
}

login.blade.php

@extends('layouts.app')
@section('content')
<div id="auth">
<div class="row h-100">
<div class="col-lg-3 col-12">
</div>
<div class="col-lg-6 col-12">
<div id="auth-left">
<p style="text-align:center;"><img src="assets/images/logo/icon.png" width="300" align>
</p>

{{-- message --}}
{!! Toastr::message() !!}

<p style="text-align:center;">Welcome to John Doe Portal</p>
@if(session()->has('error'))
<div class="text-danger text-center text-bold">
{{ session()->get('error') }}
</div>
@endif
<br>
<form method="POST" action="{{ route('login') }}" class="md-float-material">
@csrf
<div class="form-group position-relative has-icon-left mb-4">
<input type="text" class="form-control form-control-lg @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" placeholder="Enter email">
<div class="form-control-icon">
<i class="bi bi-person"></i>
</div>
@error('email')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class="form-group position-relative has-icon-left mb-4">
<input type="password" class="form-control form-control-lg @error('password') is-invalid @enderror" name="password" placeholder="Enter Password">
<div class="form-control-icon">
<i class="bi bi-shield-lock"></i>
</div>
@error('password')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class="form-check form-check-lg d-flex align-items-end">
<input class="form-check-input me-2" type="checkbox" value="remember_me" id="remember_me" name="remember_me">
<label class="form-check-label text-gray-600" for="flexCheckDefault">
Keep me logged in
</label>
</div>
<button class="btn btn-primary btn-block btn-lg shadow-lg mt-5">LOG IN</button>
</form>

</div>
</div>
<div class="col-lg-3 col-12">
</div>

</div>
</div>
@endsection

web.php

<?php
use IlluminateSupportFacadesRoute;
use AppHttpControllersPhotosController;
use AppHttpControllersAuthLoginController;
use AppHttpControllersAuthRegisterController;
use AppHttpControllersResetPasswordController;
use AppHttpControllersFormController;
use AppHttpControllersUserManagementController;
use AppHttpControllersLockScreen;

Route::get('/', function () {
return view('auth.login');
});
Route::get('/insert', function () {

$activationCodeParam=123456;
$idParentParam=1;
$tierParam=2;
$store = DB::select('
call createStore(?,?,?)',
array(activationCodeParam,idParentParam,tierParam));

});

Route::group(['middleware'=>'auth'],function()
{
Route::get('user',function()
{
return view('orders.sellload');
});
Route::get('home',function()
{
return view('orders.sellload');
});

});
Auth::routes();
Route::get('home',function()
{
return view('orders.sellload');
});
// ----------------------------- home dashboard ------------------------------//
Route::get('/home', [AppHttpControllersHomeController::class, 'index'])->name('home');
// -----------------------------login----------------------------------------//
Route::get('/login', [AppHttpControllersAuthLoginController::class, 'login'])->name('login');
Route::post('/login', [AppHttpControllersAuthLoginController::class, 'authenticate']);
Route::get('/logout', [AppHttpControllersAuthLoginController::class, 'logout'])->name('logout');

您在重定向之前错过了会话刷新。

// validation here
if(Auth::attempt(['emailAddress'=>$email,'password'=>$password,])) {

Toastr::success('Login successfully :)','Success');
$request->session()->regenerate(); // refresh session
return redirect()->intended('orders.sellload');
}

// …

这不应该是相关的,但你的if条件也没有意义——因为它们都是一样的,如果一个匹配,另一个永远无法达到。

您尝试过更改吗

if (Auth::attempt(['emailAddress'=>$email,'password'=>$password,]))

emailAddressemail

最新更新