Laravel: Проблема с системой входа в систему для обучения - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь сделать логин для обучения, поэтому посмотрел видео с youtube с такой же кодировкой. Он должен иметь возможность проверять формат вводимых данных, проверять, входит ли пользователь уже в систему или нет, проверять, получает ли пользователь доступ к следующей странице без входа в систему, но, в конце концов, он всегда будет показывать только ошибки, требующие электронной почты и пароля, даже если я уже ввел правильный ввод. Пожалуйста помоги. Вот мои коды.

web. php

<?php

  use Illuminate\Support\Facades\Route;

  Route::get('/main', 'MainController@index');

  Route::post('/main/checklogin', 'MainController@checklogin');

  Route::get('main/successlogin', 'MainController@successlogin');

  Route::get('main/logout', 'MainController@logout');

login.blade. php

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8">
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <title>Login</title>

   <!--CSS-->
   <link rel="stylesheet" href="{{ asset('css/styles.css') }}" type="text/css">
   <link rel="stylesheet" href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css' />
   <script type="text/javascript" src='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js'></script>
</head>
<body>
   <div class="login-page-frame">
      <div class="header-login-page-frame">
        <h3>Login</h3>
      </div>
      <div class="inner-login-form-frame">
           @if(isset(Auth::user()->email))
               <script>window.location="/main/successlogin";</script>
           @endif

           @if($message = Session::get('error'))
               <div class="alert alert-danger alert-block">
                  <button type="button" class="close" data-dismiss="alert"></button>
                  <strong>{{$message}}</strong>
               </div>
           @endif
           @if(count($errors) > 0)
              <div class="alert alert-danger">
                  <ul>
                    @foreach($errors->all() as $error)
                        <li>{{ $error }}</li>
                    @endforeach
                </ul>
              </div>
           @endif
           <form method="post" action="{{ url('/main/checklogin') }}" class="login-form">
               {{ csrf_field() }}
               <input type="email" placeholder="email" name="login-email" class="form-control">
               <br>
               <input type="password" placeholder="pass" name="login-password" class="form-control">
               <br>
               <input type="submit" name="login" class="btn-login" value="login">
           </form>
      </div>
   </div>
 </body>
</html>

halamanUtama.blade. php

<!DOCTYPE html>
<html>
   <head>
      <title>Halaman Utama</title>
   </head>
   <body>
      <div class="container box">
         <h3 align="center">Selamat Datang</h3>
         <br />
         @if(isset(Auth::user()->email))
            <div class="alert alert-danger success-block">
               <strong>Welcome {{ Auth::user()->email }}</strong>
               <br />
               <a href="{{ url('/main/logout/') }}">Logout</a>
            </div>
         else
            <script>window.location="/main";</script>
         @endif
      </div>
   </body>
</html>

MainController. php

<?php

   namespace App\Http\Controllers;

   use Illuminate\Http\Request;
   use Validator;
   use Auth;
   use Input;
   class MainController extends Controller
   {
      //
      function index(){
         return view('login');
      }

      function checklogin(Request $request){
         $this->validate($request, [
            'email' => 'required|email',
            'password' => 'required|alphaNum|min:3'
         ]);

         $user_data=array(
            'email' => $request->get('login-email'),
            'password' => $request->get('login-password')
         );

         if(Auth::attempt($user_data)){
            return redirect('main/successlogin');
         }else{
            return back()->with('error', 'Wrong Login Details');
         }

      }

      function successlogin(){
         return view('halamanUtama');
      }

      function logout(){
         Auth::logout();
         return redirect('main');
      }
   }

1 Ответ

1 голос
/ 09 мая 2020

Я не буду комментировать, работает ли какой-либо другой ваш код, но причина ваших ошибок проверки заключается в том, что имя входных данных вашей формы не соответствует имени полей, которые вы пытаетесь проверить.

В вашей форме ваши входные данные называются login-email и login-password. Однако в вашем контроллере вы проверяете, что предоставлены поле с именем email и поле с именем password (потому что они необходимы).

Так что либо измените имена форм на email и password или измените поля проверки на login-email и login-password.

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