Nakon ovog poglavlja
Što ćete znati napraviti
- Zaštititi rute auth i verified middlewareom.
- Napisati policy koji provjerava vlasništvo i ulogu.
- Primijeniti rate limiting na osjetljive radnje.
Identitet kroz guard
Laravel upravlja sesijom, ali pravila ostaju naša
Laravelovi starter kitovi mogu pružiti registraciju, prijavu, reset i verifikaciju. Možemo i ručno koristiti Auth facade ili guard. Nakon uspješne Auth::attempt provjere obavezno regeneriramo sesiju; logout invalidira sesiju i obnavlja CSRF token.
<?php
if (Auth::attempt($credentials, $request->boolean('remember'))) {
$request->session()->regenerate();
return redirect()->intended(route('dashboard'));
}
return back()->withErrors([
'email' => 'Podaci za prijavu nisu ispravni.',
])->onlyInput('email');
Tko smije što nad kojim zapisom
Policy centralizira odluku o resursu
auth middleware potvrđuje prijavu, verified potvrđuje e-mail, ali ni jedno ne odlučuje smije li korisnik urediti konkretan članak. Policy prima korisnika i model te provodi vlasništvo, ulogu ili drugo pravilo.
<?php
final class ArticlePolicy
{
public function update(User $user, Article $article): bool
{
return $user->id === $article->user_id
|| $user->role === UserRole::Administrator;
}
}
Route::middleware(['auth', 'verified'])->group(function (): void {
Route::resource('articles', ArticleController::class);
});
Otežajte automatiziranu zloupotrebu
Ograničenje brzine prema riziku
Prijava, reset lozinke, slanje e-maila i skupi API pozivi trebaju vlastite limite. Ključ može kombinirati normalizirani račun i IP, ali treba paziti na zajedničke mreže i mogućnost namjernog zaključavanja žrtve.
Za osjetljivu promjenu možemo tražiti nedavnu potvrdu lozinke ili MFA. Sesije ograničavamo po trajanju i omogućujemo korisniku opoziv drugih uređaja.
<?php
RateLimiter::for('login', function (Request $request): Limit {
return Limit::perMinute(5)->by(
Str::lower((string) $request->input('email')) . '|' . $request->ip()
);
});
Primijenite naučeno
Vježba: Privatni urednički dio
Zaštitite uređivanje članaka prijavom, verifikacijom i policyjem.
- Vlasnik smije uređivati vlastitu skicu.
- Administrator smije uređivati sve članke.
- Dodajte feature test koji potvrđuje 403 za drugog običnog korisnika.
Za provjeru i nastavak