Porównaj ceny domen i usług IT, sprzedawców z całego świata

Błędy logowania do Laravel 5.5 nie są wyświetlane


Oto mój login.blade.php
@if(Session::get('errors')||count( $errors ) > 0)
@foreach ($errors->all() as $error)
[b]{{ $error }}[/b]>
@endforeach
@endif

Oto mój LoginController.php:
protected function sendFailedLoginResponse(Request $request)
{
return redirect()->back()
->withInput($request->only($this->username(), 'remember'))
->withErrors([
$this->username() => 'ERRORS',
]);
}

A oto mój web.php (trasy)
// I am customizing the login to do extra checks, 
// but I still need the basic auth scaffolding.
Auth::routes(); ...
Route::group(['middleware' => 'web'], function () {
Route::view('/login', 'auth.login');
Route::post('/login', 'Auth\LoginController@login')->name('login');
});

Kiedy próbuję zalogować się przez złego użytkownika, kończy się to niepowodzeniem

nie pokazuje błędów

w widoku, co robię źle?

Aktualizacja

:

Próbowałem zmienić login.blade.php, jak zasugerował @Seva Kalashnikov, ale bezskutecznie.

Próbowałem również sugestii @Akshay Kulkarni bez powodzenia.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Spróbuj usunąć
Session :: get ('errors')
z instrukcji
if
w login.blade.php
@if(count( $errors ) > 0)
@foreach ($errors->all() as $error)
[b]{{ $error }}[/b]>
@endforeach
@endif

Oprogramowanie pośredniczące
ShareErrorsFromSession
dostarczane przez grupę oprogramowania pośredniczącego sieci Web jest odpowiedzialne za zmienną widoku
$ error
, więc zawsze będzie ona zdefiniowana (

link tutaj
https://laravel.com/docs/5.5/v ... rrors
)
[UPDATE]
I jak wskazał @Ohgodwhy, musisz użyć

przykład
https://laravel.com/docs/5.5/v ... rrors
@if ($errors->any())
Więc w twoim przypadku będzie to:
@if($errors->any())
@foreach ($errors->all() as $error)
[b]{{ $error }}[/b]>
@endforeach
@endif
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Załóż to
Auth::routes();
W grupie oprogramowania pośredniego.
Oprogramowanie pośredniczące w sieci Web rozpoczyna sesję.
Jeśli napiszesz jakąkolwiek trasę poza tą grupą oprogramowania pośredniego, nie będziesz mieć dostępu do sesji.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Okej, po kilku godzinach w końcu to znalazłem! Stworzyłem projekt Laravel od zera i zrobiłem różnicę, aby znaleźć winowajcę:
W

app/Http/Kernel.php

upewnij się, że pozbyłeś się oprogramowania pośredniczącego StartSession:
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
\App\Http\Middleware\TrustProxies::class,
\Illuminate\Session\Middleware\StartSession::class,// <-- Remove this
];

Wyjaśnienie: miałem go tam, ponieważ przeczytałem, że musiałem umieścić go jako oprogramowanie pośredniczące (gdybym nie używał
Route :: group (['middleware' = & > 'web']
w twój web.php), myślę, że o nim zapomniałem. Myślę, że umieszczając go tam

i

używając opakowania w web.php, skróć w jakiś sposób sesję błędu, zanim trafi do widoku.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli używasz Entrust (lub być może innych pakietów) i dodajesz jego klasy do
$ routeMiddleware
, problem może być spowodowany tym, że dodane później niestandardowe klasy zastępują domyślne klasy Laravel.
Rozwiązaniem jest przeniesienie własnych klas na początek tablicy
$ routeMiddleware
.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się