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.