Robotlardan CSRF ile korunabilirsin
csrf filtresini kullanman için formuna {{ Form::token() }} komutunu eklemelisin. Bunu yazdığında gizli bir input içine
Laravel rastgele bir şeyler yazar.
Formun gönderileceği rotaya da csrf filtresi uygularsın, Laravel formdan gelen değeri kendi sessiona sakladığı ile karşılaştırır ve sonuç yanlışsa işlemi devam ettirmez.
Detaylı bilgi için ;
https://github.com/laravel/docs/blob/master/html.md#csrf-protection
Route bölümü yazılırken içine eklenecek filtreler senin işlerini kısa yoldan güvenle yapmanı sağlar, örneğin ana sayfanı kontrol edelim.
Route::get('/','HomeController@getIndex');
burada filtreye gerek yok, çünkü bu sayfayı herkes görecek.
Üye yada farklı gruplara özel yapılacak sayfalarda sen her sayfaya ayrıca
if (!Auth::check()) return Redirect::to('bla bla bla');
yazacağına ya da oturumu açık mı, bu işlemi yapmaya yetkisi var mi gibi her talepte oturum ve yetki kontrolü yapacağına.
Rotada ya filtre eklersin,
Laravel senin için bu karmaşaya son verir.
Route::get('/account/wall','AccountController@getWall')->before('auth')
yada
Route::get('/account/wall',array('before' => 'auth', 'uses' =>'AccountController@getWall')
şeklinde filtre uyguladığında,
Yazdığın u rota da
if (Auth::check() kodlarını yazmana gerek kalmaz, o rotada her zaman auth kontrolü laravel tarafından yapılır.
Mesela yönetici kontrolünü ele alalım;
Route::group(array('prefix' => 'admin', 'before' => array('auth|admin')), function()
{
Route::get('kullanicilar','AdminUsersController@getUsers');
Route::get('yazilar','AdminUsersController@getArticles');
Route::get('kategoriler','AdminUsersController@getCategory');
});
filters.php içinde filtremiz
Route::filter('admin', function($route, $request)
{
if ( ! Auth::user()->role != 'admin' ) { //users tablonda role diye bir alanın olduğunu ve o alana da yetkiyi user, admin vs. vs. diye yazdığını varsaydım bu örnekte.
return App::abort(401, 'Yetkiniz bulunamadı.');
}
});
Bu örnekte ise sitende,
admin/kullanicilar,
admin/yazilar ya da
admin/kategoriler rotaları çağrıldığında,
Laravel auth|admin şeklinde yazdığın iki filtreyi kontorl eder.
Auth filtresinde oturum var mı bakar yoksa ilgili sayfaya yönlendirir, oturum varsa, admin filtresinden yetkini kontrol eder ve buradan çıkacak sonuca göre davranarak. Seni çok büyük yüklerden kurtarır.
Daha detaylı bilgi için :
https://github.com/laravel/docs/blob/master/routing.md
Kolay gelsin. eksik ve yanlışlar için kusuruma bakmayın.