Giriş
Oturumlar kullanıcı istekleri hakkında bilgi saklamaya imkan sağlamanın bir yoludur. Laravel, sunucu taraflı kullanılan oturum çeşitleri sunar. Memcached, Redis, Database gibi popüler suncu taraflı çözümler Laravel’e dahil edilmiştir.
Yapılandırma
Oturum yapılandırma dosyası config/session.php konumundır. Dosya içerisinde seçenekler iyice açıklanmıştır. Laravel varsayılan olarak bir çok uygulama için iyi şekilde çalışan file oturum sürücüsü kullanılması için yapılandırılmıştır. Yayınlama durumunda daha hızlı oturum performansı sağlayan memcached veya redis tercih edebilirsiniz.
Oturum sürücüsü her istekte saklanan oturum bilgisini tanımlar. Laravel ile bir kaç sürücü dahil edilmiştir.
file– oturumlarıstorage/framework/sessionsiçinde saklanır.cookie– oturumlar şifreli bir şekilde cookie ile saklanır.database– oturumlar uygulamanız tarafından veritabanında saklanır.memcached/redis– oturumlar ön bellek tabanlı saklanır.array/redis– oturumlar basit bir PHP dizisinde sakanır, kalıcı değildir.
Not: Array sürücüsü test çalıştırmak gibi kalıcı oturum gerektirmeyen kullanımlar için uygundur.
Sürücü Gereksinimleri
Veritabanı (Database)
Veritabanı oturum sürücüsü kullanıldığında, bir tablo oluşturmaya ihtiyacınız olacaktır. Örnek:
|
1 2 3 4 5 |
Schema::create('sessions', function ($table) { $table->string('id')->unique(); $table->text('payload'); $table->integer('last_activity'); }); |
Bunu oluşturmak için session:table Artisan komutunu da kullanabilirsiniz!
|
1 2 3 4 5 |
php artisan session:table composer dump-autoload php artisan migrate |
Redis
Redis oturum sürücüsünü Laravel ile kullanmadan önce, predis/predis paketini (~1.0) Composer yoluyla yüklemeniz gerekir.
Diğer Oturum Önerileri
Laravel Framework flash oturum anahtarını kendi içinde kullanır ve bu isimde bir öğe atmamanız gerekir.
Eğer tüm saklanan oturum verileri şifreli olacaksa, encrypt yapılandırma ayarını true ayarlayın.
Temel Kullanım
Oturuma Erişim
Öncelikle, oturuma ulaşalım. Oturum örneğine HTTP Request yoluyla erişebiliriz. Kontrolcü metodlarının bağımlılıkları Laravel Servis Taşıyıcısı yoluyla yerleştirildiğini hatırlayın.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Controllers\Controller; class UserController extends Controller { /** * istenen kullanıcı için profil gösterimi. * * @param Request $request * @param int $id * @return Response */ public function showProfile(Request $request, $id) { $value = $request->session()->get('key'); // } } |
Oturumdan bir değer getirdiğinizde, varsayılan değer olarak geçirebileceğiz değeri ikinci argüman olarak geçirebilirsiniz. Bu varsayılan değer belirtilen anahtar oturumda bulunanamadınğında döndürülür.
|
1 2 3 4 5 |
$value = $request->session()->get('key', 'default'); $value = $request->session()->get('key', function() { return 'default'; }); |
Oturumdan tüm bilgileri getirmeyi dilerseniz, all metodunu kullanabilirsiniz.
|
1 |
$data = $request->session()->all(); |
Oturumda bilgi sakmak veya getirmek için genel session PHP fonksiyonunu kullanaiblirsiniz.
|
1 2 3 4 5 6 7 |
Route::get('home', function () { // Oturumda bilgi getir... $value = session('key'); //Oturumda bazı bilgiler sakla... session(['key' => 'value']); }); |
Bir Öğenin Oturumda Olup Olmadığını Belirlenme
has metodu bir öğenin oturumda olup olmadığını kontorl etmek için kullanılabilir. Bu metod öğe var ise true döner:
|
1 2 3 |
if ($request->session()->has('users')) { // } |
Oturumda Bilgi Saklanma
Oturum örneğine eriştiğinizde, oturumdaki bilgilerinizle etkileşim için çeşitli işlevler kullanabilirsiniz. Örneğin, put metodu oturumunuzda yeni bilgi parçaları saklar:
|
1 |
$request->session()->put('key', 'value'); |
Oturum Dizi Değerlerine Ekleme Yapmak
push metodu bir dizi olan oturum değişkenine yeni bir değer eklemek için kullanılabilir. Örneğin, bir dizi olan takım isiimlerinizde user.teams anahtarı varsa, şu şekilde diziye yeni bir değer ekleyebilirsiniz:
|
1 |
$request->session()->push('user.teams', 'developers'); |
Bir Öğe Getirme Ve Silme
pull metodu oturumunuzdan bir öğeyi getirir ve siler.
|
1 |
$value = $request->session()->pull('key', 'default'); |
Oturumdan Bir öğeyi Silme
forget metodu oturumdaki bilgiden bazı kısımlarını siler. Oturumdan tüm bilgileri silmek isterseniz flush metodunu kullanabilirsiniz:
|
1 2 3 |
$request->session()->forget('key'); $request->session()->flush(); |
Oturum ID’sini Tekrar Oluşturma
Oturum ID’sini tekrar oluşturmaya ihtiyacınız varsa regenerate metodunu kullanabilirisiniz:
|
1 |
$request->session()->regenerate(); |
Anlık Veriler
Bazen yalnızca bir sonraki istek için oturumda bir öğe saklamayı dilersiniz. Bunu flash metodunu kullanarak yapabilirsiniz. Bu metod oturumdaki veriyi bir yalnızca sonraki HTTP isteği sırasında kullanılabilir yapacak ve sonrasında bu veri silinecek. Anlık verinin başlıca kullanımın alanı kısa süreli durum mesajları içindir.
|
1 |
$request->session()->flash('status', 'Task was successful!'); |
Anlık verilerinizi daha fazla istekte tutmak isterseniz, bir ek istek için daha tüm oturum verilerinizi tutan reflash metodunu kullanabilirsiniz. Eğer yalnızca belirli bir anlık veriyi tutmak isterseniz keep metodunu kullabilirsiniz.
|
1 2 3 |
$request->session()->reflash(); $request->session()->keep(['username', 'email']); |