Ověření vlastního přihlášení Laravel pomocí Ajaxu

Laravel je pravděpodobně nejpoužívanějším a nejoblíbenějším PHP frameworkem pro webové řemeslníky.

Laravel má vlastní vestavěnou funkcionalitu pro ověřování (registrace a přihlášení uživatele). Pokud si myslíte, že jste s vestavěnou funkcí spokojeni, můžete ji využít a vaše aplikace bude fungovat dobře. Pokud však chcete zajít dále a mít svou vlastní funkci ověřování, tento článek je pro vás. Začněme!

V tomto článku vám ukážu, jak můžete napsat vlastní ověření a ověření přihlašovacího formuláře, aniž byste museli znovu načítat prohlížeč.

KROK 1:Vytvořte uživatele
Chci předpokládat, že již máte uživatele vytvořené v tabulce databáze uživatelů.

KROK 2:Vytvořte přihlašovací stránku
Toto je náš krátký kód pro zobrazení přihlašovací stránky

<body>
<div class="col-lg-4 col-md-4">
   <form action="{{ route('login') }}" method="POST"  id="login_form" 
   class="request-form ">
    @csrf
   <h2>Login</h2>
   <div id="show_error" style="color: red"> </div>

   <div class="form-group mr-2">
      <label for="" class="label">Email</label>
      <input type="email" name="email" class="form-control" >
      <span class="text-danger error-text email_error" 
       style="color: red"></span>
   </div>

   <div class="form-group mr-2">
      <label for="" class="label">Password</label>
      <input type="password" name="password" class="form-control" 
      >
      <span class="text-danger error-text password_error" 
      style="color: red"></span>
   </div>

   <div class="form-group">
   <input type="submit" value="Login" class="btn  py-3 px-4" 
   style="background-color: #5f76e8; color:#ffffff">
   </div>
  </form>
</div>
//add javascript with ajax here
<script src="[place you jquery source here...]"></script>
<script>
        $("#login_form").submit(function(e){
         e.preventDefault();

        var all = $(this).serialize();

        $.ajax({
            url:  $(this).attr('action'),
            type: "POST",
            data: all,
            beforeSend:function(){
                $(document).find('span.error-text').text('');
            },
            //validate form with ajax. This will be communicating 
              with your LoginController
            success: function(data){
                if (data.status==0) {
                    $.each(data.error, function(prefix, val){
                        $('span.'+prefix+'_error').text(val[0]);
                    });
                }
               // redirect the user to [another page] if the 
                   login cred are correct. Remember this is 
                   communicating with the LoginController which we 
                   are yet to create
                if(data == 1){
                    window.location.replace(
                     '{{route("dashboard.index")}}'
                    );
                }else if(data == 2){
                 // Show the user authentication error if the 
                   login cred are invalid. Remember this is 
                   communicating with the LoginController which we 
                   are yet to create
                    $("#show_error").hide().html("Invalid login 
                       details");
                }

            }
            })

        });


    </script>
</body>



Ukázka zobrazení přihlášení:login.blade.php

POZNÁMKA: Můžete si to přizpůsobit podle svého přání

KROK 3:Vytvořte LoginController
Otevřete rozhraní příkazového řádku, cd k vašemu projektu
adresář a vložte tam níže uvedený příkaz

php artisan make:controller LoginController

 namespace App\Http\Controllers;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Session;
 use Illuminate\Support\Facades\Validator;
   class LoginController extends Controller{
      public function login(Request $request){
        $validator = Validator::make($request->all(), [
        'email' =>    'required',
        'password' => 'required',
      ]);
       // validate all requests and it sends output to your 
          login.blade.php

       if(!$validator->passes()){
          return response()->json([
             'status'=>0, 
             'error'=>$validator->errors()->toArray()
          ]);
        }

       $user_cred = $request->only('email', 'password');
        if (Auth::attempt($user_cred)) {

             //if user is logged in and the role is user
            if(Auth()->user()->role=='user'){  
               return response()->json([ [1] ]);
            }  

        }else{
             //if user isn't logged in
                return response()->json([ [2] ]);
        }
        return redirect("/");
     }
  }

KROK 4:Upravte svou trasu:web.php
přidejte ovladač do svého web.php; jako možná
Route::post('/login'[App\Http\Controllers\LoginController::class, 'login'])->name('/login');

Ahoj přátelé, v tomto článku jsme úspěšně vytvořili přihlašovací formulář pomocí Laravel a AJAX bez opětovného načtení prohlížeče. Doufám, že se vám bude líbit.