Laravel 5.7 Войти без перенаправления или ошибок - PullRequest
0 голосов
/ 10 октября 2018

Я новичок в Laravel, поэтому я начал следовать урокам на Laracast, затем парень, который давал уроки, пошел к аутентификации пользователя и угадал и т.д.тот пользователь, который только что зарегистрировал логин (и может делать все, что должен делать пользователь логина на веб-сайте).Когда я захожу в форму входа и пытаюсь войти, она не перенаправляет и не выдает ошибки.Он просто перезагружается, даже если учетные данные пользователя / пароля неверны.

Необходимо зарегистрировать способ сохранения пользователя в базе данных.

$user = User::create([
    'name' => request('name'),
    'email' => request('email'),
    'password' => bcrypt(request('password'))
]);

форма входа ...

<form method="POST" action="/login">
    {{ csrf_field() }}
    <div class="form-group">
        <label for="Email">Email:</label>
        <input type="email" class="form-control" id="Email" name="Email" required>
    </div>

    <div class="form-group">
        <label for="password">Password:</label>
        <input type="password" class="form-control" id="password" name="password" required>
    </div>

    <div class="form-group">
        <button type="submit" class="btn btn-primary">Sign in</button>
    </div>
    @include ('layouts.errors')
</form>

web.php для маршрутизации

 Route::get('/', 'PostsController@index')->name('home');
 Route::get('/posts/create', 'PostsController@create');
 Route::post('/posts', 'PostsController@store');
 Route::get('/posts/{post}', 'PostsController@show');

 Route::post('/posts/{post}/comments', 'CommentsController@store');

 Route::get('/register', 'RegistrationController@create');
 Route::post('/register', 'RegistrationController@store');
 Route::get('/login', 'SessionsController@create')->name('login');
 Route::post('/login', 'SessionsController@store');
 Route::get('/logout', 'SessionsController@destroy');

Контроллер, который обрабатывает логин

<?php

class SessionsController extends Controller
{
    public function __construct()
    {
        $this->middleware('guest');
    }

    public function create()
    {
        return view('sessions.create');
    }

    public function store()
    {
        // Attempt to authenticate the user.
        if (!auth()->attempt(request(['email', 'password']))) {
            return back();
        }
        // Redirect them to the homepage
        return redirect()->home();
    }

    public function destroy()
    {
        auth()->logout();
        return redirect()->home();
    }
}

Errors.php

<div class="form-group">
  <div class="alert alert-errors">
        <ul>
            @foreach($errors->all() as $error)
                <li> {{ $error }} </li>
            @endforeach
        </ul>
    </div>
</div>

1 Ответ

0 голосов
/ 10 октября 2018

Посмотрите на вашу форму.Имена входов являются теми, которые необходимы в контроллере для доступа к ним.

В заявленной вами форме Email и пароль .

 ...
<input type="email" class="form-control" id="Email" name="Email" required>
....
<input type="password" class="form-control" id="password" name="password" required>
...

В контроллере вы пытаетесь получить доступ к email и пароль .

if (! auth()->attempt(request(['email', 'password']))) {

Это может быть причиной сбоя входа в систему, и вы только что были перенаправлены на страницу, потому что исполняемый код

return back(); 

Поэтому измените свою форму на

     ....

    <div class="form-group">

        <label for="Email">Email:</label>

        <input type="email" class="form-control" id="email" name="email" required>

    </div>
    .....

Дайте мне знать, если это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...