2012-04-08 15 views
8

Ben ve taraf sağlayıcı symfony 2.0 güvenlik sistemi için kendi Kullanıcı sınıfını kullanıyorum.Symfony 2 - her sayfa yüklemesinde kullanıcıyı sorgulamayı nasıl devre dışı bırakabilirsiniz?

t0.password OLARAK id1, kullaniciadi2 OLARAK t0.username, salt3 OLARAK t0.salt, AS t0.id SEÇ:

ben sayfa symfony her yeniden yüklemede db kullanıcıyı getirilirken olduğunu fark password4, w9_users t0 t0.id = DAN credentials7 OLARAK is_active6 GİBİ t0.is_active, AS email5, t0.credentials t0.email? Parametreler: ['23'] Zaman: 4.43 ms

Bu davranışı devre dışı bırakmanın kolay bir yolu var mı? Belki kullanıcı verilerini oturum değişkenlerine serileştirebilir veya bir şekilde önbelleğe alabilirler?

cevap

11

Sen UserProvider arasında refreshUser yönteminde bu davranışı değiştirebilir.

doktrini ile bunu yaparken dikkatli olmalıdır:

: varsayılan olarak yapılmazsa, bu yüzden de çeşitli konularda yol açacak oturumda bunu saklanması

: tuzaklardan açıklayan There is an issue at FosUserBundle github

Bir yöneticinin bir kullanıcının izinlerini değiştirmesi durumunda, değişikliklerin yalnızca kullanıcıyı bir sonraki veritabanından aldığınızda bir etkisi olacaktır. Yani kullanıcı sadece oturumda tefrika edildi kullanıcıyı kullanmanızda bir güvenlik yaşanan sorunlar

önlemek için dikkatli yapılmalıdır önbelleklendiği, artık Doktrin tarafından yönetilen edilmeyecektir. Bu kullanıcıyı değiştirmek veya ilgili kullanıcıyı kullanmak istiyorum en kısa sürede, geri (güvenlik duvarı tarafından kullanılan olandan farklı bir nesneyi döndürür) UnitOfWork içine birleştirmek olacağı anlamına gelir. Birleştirme, bir DB sorgusunu da tetikleyecektir. Ve bu mantığı gerektiren, kullanıcı nesnesini güncellemeler için kullanabilmeyi bekleyen yerleşik kontrol cihazının bazılarını kıracak.

İlgili konular