Я использую php artisan bootstrap --auth для создания представлений для моей аутентификации.
Однако я не могу войти в систему, используя страницу входа, предоставленную кодом. Все работает нормально на локальном компьютере, но на рабочем сервере просто перенаправляется на страницу входа, несмотря на предоставление правильных или неправильных учетных данных.
<form method = "POST" action = "{{ route('login') }}" class = "row g-3">
@csrf
<div class = "col-12">
<label for = "username" class = "form-label">{{ __('username') }}</label>
<input id = "username" type = "username" class = "form-control form-control-lg @error('username') is-invalid @enderror"
name = "username" value = "{{ old('username') }}" required autocomplete = "username" autofocus>
@error('username')
<span class = "invalid-feedback" role = "alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class = "col-12">
<label for = "password" class = "form-label">{{ __('password') }}</label>
<input id = "password" type = "password" class = "form-control form-control-lg @error('password') is-invalid @enderror"
name = "password" required autocomplete = "current-password">
@error('password')
<span class = "invalid-feedback" role = "alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class = "col-12">
<div class = "form-check d-flex align-items-center">
<input class = "form-check-input me-3" type = "checkbox" name = "remember" id = "remember"
{{ old('remember') ? 'checked' : '' }}>
<label class = "form-check-label" for = "remember">
{{ __('مرا به خاطر بسپار') }}
</label>
</div>
</div>
<div class = "col-12">
<button type = "submit" class = "btn btn-lg btn-primary me-3">
{{ __('login') }}
</button>
<a href = "{{ route('register') }}" class = "btn btn-lg btn-ghost-pink">
signup
</a>
</div>
</form>
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
use AuthenticatesUsers;
protected $redirectTo = RouteServiceProvider::HOME;
public function __construct()
{
$this->middleware('guest')->except('logout');
}
}
<?php
return [
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
],
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
'throttle' => 60,
],
],
'password_timeout' => 10800,
];
.env на производствеDB_CONNECTION=***
DB_HOST=***
DB_DATABASE=***
DB_USERNAME=***
DB_PASSWORD=***
DB_PORT=***
APP_ENV=production
APP_DEBUG=false
APP_KEY=base64:JFFvM6+apX5aMU6VOXaLhSiim49nob5m3Rf6zpUM/mc
LOG_CHANNEL=errorlog
APP_URL=https://charbanshimi.iran.liara.run
SESSION_DRIVER=file
SESSION_LIFETIME=1440
SESSION_DOMAIN=charbanshimi.iran.liara.run
SESSION_SECURE_COOKIE=false
Я пробовал то, что было упомянуто здесь как правильный ответ до сих пор. Но это не решило проблему.
Я уже протестировал цикл req/res в браузере. Но отправка формы входа, похоже, не работает даже с неверными учетными данными, и сервер просто перенаправляет на страницу входа, и я не нашел причин для такого поведения.






Laravel по умолчанию не поставляется с именами пользователей для входа в систему, они принимают только электронные письма, но вы можете заставить его принимать имя пользователя или адрес электронной почты.
Требование, у вас должно быть поле username в таблице users!
Измените в своем лезвии поле следующим образом: я просто добавил проверку на наличие ошибок в полях имени пользователя или электронной почты и чтобы возвращалось старое значение поля имени пользователя или электронной почты.
<input id = "username" type = "text" class = "form-control form-control-lg @error('username', 'email') is-invalid @enderror " name = "username" value = "{{ old('username') ?: old('email') }}" required autocomplete = "username" autofocus>
В вашем LoginController измените и добавьте следующее!
public function __construct()
{
$this->middleware('guest')->except('logout');
$this->username = $this->useUsername();
}
public function useUsername()
{
$username = request()->input('username');
$fieldType = filter_var($username, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';
request()->merge([$fieldType => $username]);
return $fieldType;
}
public function username()
{
return $this->username;
}