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/sessions
iç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']); |