Я создал форму входа в систему под названием UserLogin.blade.php. И я создал контроллер под названием UserLoginControl.php и модель под названием login.php. Теперь я хочу войти в мою систему, используя имя пользователя и пароль, которые находятся в базе данных. Но после ввода имени пользователя и пароля и нажатия кнопки «Вход», это показывает мне эту ошибку –
(1/1) ОшибкаException
Неопределенный индекс: пароль
Но я объявил имя пользователя и пароль в файле UserLoginController.php.
Как я могу это исправить ??
Вот UserLogin.blade.php (Просмотр файла).
<!DOCTYPE html> <html> <head> </head> <body"> <form method="post" action="{{ route('UserLogin') }}"> {{ csrf_field() }} Username : <input type="text" name="username"> <br><br> Password : <br><input type="password" name="password" class="text"> <br><br> <input type="submit" name="login" value="Login"> <br> <small><a href="{{ route('first') }}">Return Home</a></small> </form> </center> </body> </html>
Вот файл UserLoginController.php (файл контроллера).
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\login; use Illuminate\Support\Facades\Auth; class UserLoginController extends Controller { public function index() { return view('UserLogin'); } public function login(Request $request) { $this->validate($request, [ 'username' => 'required', 'password' => 'required' ]); if (Auth::attempt(['username' => $request['username'], 'pw' => $request['password']])) { return redirect('RegView'); } return redirect('UserLogin'); } }
Вот файл login.php (файл модели).
<?php namespace App; use Illuminate\Contracts\Auth\Authenticatable; use Illuminate\Database\Eloquent\Model; class login extends Model implements Authenticatable { use \Illuminate\Auth\Authenticatable; }
И я написал это в файле Auth.php
'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\User::class, ], // 'users' => [ // 'driver' => 'database', // 'table' => 'users', // ], 'users' => [ 'driver' => 'eloquent', 'model' => App\login::class, ],
Вот Маршруты, которые я создал.
Route::any('/UserLogin', 'UserLoginController@index')->name('UserLogin'); Route::post('/UserLogin','UserLoginController@login');
Вот моя таблица логинов.
сначала проверьте, имеет ли ваш login
модели login
поля в схеме логина входа после этого:
if (Auth::attempt(['username' => $request->get('username'), 'pw' => $request->get('password')])) { return redirect('RegView'); }
чтобы:
if (Auth::attempt(['username' => $request->get('username'), 'password' => $request->get('password')])) { return redirect('RegView'); }
также перейдите в свое приложение / Http / Auth / LoginController.php и добавьте следующее:
/** * Get the login username to be used by the controller. * * @return string */ public function username() { return 'username'; }
и, наконец, измените это:
'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\User::class, ], // 'users' => [ // 'driver' => 'database', // 'table' => 'users', // ], 'users' => [ 'driver' => 'eloquent', 'model' => App\login::class, ],
к этому :
'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\login::class, ],
проверьте, есть ли какие-либо ошибки, если обновление страницы:
@if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif
если вы действительно хотите использовать pw
вместо password
посмотрите на этот ответ: https://stackoverflow.com/a/39382427/4369087
Вы должны получить доступ к опубликованным данным, используя метод get в $ request, вместо использования синтаксиса массива.
if (Auth::attempt(['username' => $request->get('username'), 'pw' => $request->get('password')])) { return redirect('RegView'); }
Согласно документам , есть два способа сделать это (завернутый для ясности в этом сообщении):
if (Auth::attempt([ 'username' => $request->username, 'pw' => $request->password ])) { return redirect('RegView'); }
или
if (Auth::attempt([ 'username' => $request->input('username'), 'pw' => $request->input('password') ])) { return redirect('RegView'); }
В вашем контроллере:
if (Auth::attempt(['username' => $request->get('username'), 'password' => $request->get('password')])) { return redirect('RegView'); }
В вашей модели:
protected $fillable = [ 'username', 'password' ];