2013-10-22 39 views
5

Kullanıcıların tek seferde giriş yapabildiği bir kullanıcı politikası uygulamaya çalışıyorum. Bunu Laravel'in Auth sürücüsünün üstüne inşa etmeye çalışıyorum.Tek Oturum Oturum Aç Oturum Aç Laravel

Oturumları veritabanında saklamak ve her kullanıcı adı için anahtarları sabit yapmak için Oturum sürücüsünü kullanmayı düşündüm. Bu muhtemelen oturum sabitleme nedeniyle korkunç bir uygulamadır.

Uygulama nasıl bir şey olurdu? Auth sürücüsündeki hangi yöntemleri düzenlemem gerekir? Ortak oturum anahtarı nerede saklanırdı?

cevap

13

Kısa bir süre önce bunu yaptım. içinde. Bir kullanıcı günlükleri Sonra küçük bir sınıf depolanan oturum kimliği kaydedilir geçerli kullanıcıya aynı ise kontrol vardı

Çözümümün oturumu değerini ayarlamak için oldu.

kullanıcı günlükleri ise Başka bir yerden DB'deki oturum kimliği güncellenecek ve "eski" kullanıcı oturumu kapatılacak. .

$user->last_session = session_id(); 
$user->save(); 

kontrol etmek için oturumu aşağıda kullanılan geçerli olup olmadığını: kullanıcı günlükleri Aşağıda gerçekleştiğinde giriş başarılı olduğunda

Sadece üstüne koydu, Auth sürücü ya da bir şey değiştirmedi

if(session_id() != Auth::user()->last_session){ 
    Auth::logout(); 
    return true; 
} 

sen kullanıcıların tabloda bir sütunu eklendi görebileceğiniz gibi ben bir Auth filtresinde parçası "oturumu geçerli olup olmadığını kontrol" koymak tahmin ediyorum last_session

+0

aradı? Teşekkürler, hepimiz Auth sürücüsünde güldüm, ama bu daha basit. –

+0

@JosephSzymborski Evet. Bazen sadece doğru yönde bir itme ihtiyacın var. Oturumun geçerli olup olmadığını kontrol eden yeni bir sınıf yaptım. Kullanıcı, sınıfa giriş gerektiren bir grup rota/filtre ziyaret ettiğinde her çağrılır. –

+0

Laravel oturum kimliğini elde etmek Laravel 4'te bu şekilde yapılabilir. Laravel 3 ($ _COOKIE ["laravel_session"]) ve Laravel> = 4.1 (Session :: getId()) için başka bir yol var. Krediler http://stackoverflow.com/questions/16812747/how-can-i-get-the-session-id-in-laravel – Jos