Küçük bir ek yükü olan, ancak bir prototip olarak çalışıyor gibi görünen yeni bir çözüm buldum. Varsayımlardan biri, oturum açmak için bir onur sistemi ortamında olduğunuzdur, ancak sekmeler arasında geçiş yaptığınızda bir parola yeniden talep ederek uyarlanabilir.
Yeni bir tarayıcı sekmesinin hangi kullanıcının etkin olduğunu değiştirdiğini tespit etmek için localStorage (veya eşdeğeri) ve HTML5 depolama olayını kullanın. Bu durumda, geçerli pencereyi kullanamayacağınızı (veya pencereyi geçici olarak devre dışı bırakamadığınızı belirten bir mesajla birlikte bir hayalet yer paylaşımı oluşturun.) Pencere yeniden odaklandığında, bir AJAX istek günlüğü gönderin kullanıcı geri.
Bu yaklaşıma bir uyarı: normal AJAX çağrılarınız olamaz (yani, oturumunuza bağlı olanlar), odağı olmayan bir pencerede gerçekleşir (örneğin, bir gecikmeden sonra bir çağrı olduysanız) bundan önce manuel olarak bir AJAX yeniden giriş çağrısı yaparsınız. Gerçekten yapmanız gereken tek şey, AJAX işlevinizin önce localStorage.currently_oked_in_user_id === window.yourAppNameSpace.user_id adresinden emin olmak ve ilk önce AJAX üzerinden giriş yapmaktır.
Bir diğeri yarış koşulları: eğer pencereleri karıştırmak için yeterince hızlı değiştirebilirseniz, alox1 yanlış oturum altında yapılmış bir relogin1-> relogin2-> ajax1-> ajax2 dizisiyle karşılaşabilirsiniz. Oturum açma AJAX isteklerini bir diziye aktararak ve ardından yeni bir oturum açma isteği göndermeden önce mevcut tüm istekleri iptal edin.
Dikkat edilmesi gereken son şey, pencere yenilemeleri. Etkin bir AJAX giriş isteğiniz varken biri pencereyi yeniler, ancak tamamlanmamışsa, yanlış kişi adına yenilenir. Bu durumda, kullanıcıyı potansiyel karışıklık konusunda uyarmak ve standart dışı bir ön yükleme olayını kullanarak bir AJAX oturum açma isteğini yeniden göndererek İptal'i tıklatmasını isteyebilirsiniz. Daha sonra, bunu tamamlayabilmelerinin tek yolu, istek tamamlanmadan önce Tamam'ı tıklamaktır (veya yanlışlıkla enter / boşluk çubuğuna vurmaktır, çünkü Tamam - maalesef bu durumda - varsayılan.) Bu durumu ele almanın başka yolları da var, çoğu durumda çalışacak ancak kullanıcı klavye kısayolunun yeniden yapılandırılması veya alternatif işletim sistemi kullanımı ile engellenebilecek F5 ve Ctrl + R / Alt + R tuşlarının algılanması. Ancak, bu gerçekte biraz önemli bir durumdur, ve en kötü durum senaryoları asla o kadar kötü değildir: bir onur sistemi yapılandırmasında yanlış kişi olarak giriş yapmış olursunuz (ancak sayfaları renkler, stiller, belirgin şekilde görüntülenen adlarla kişiselleştirerek durumun bu olduğunu açıkça belirtebilirsiniz, vb.); bir şifre yapılandırmasında, oturumu kapatmış veya oturumlarını paylaşmış olmak için şifrelerini girmiş olan son kişi üzerindedir veya bu kişi gerçekte geçerli kullanıcıysa, ihlal yoktur.
Ancak sonunda, profiller kurmak zorunda kalmadan IE kullanmak veya URL'leri yeniden yazmak zorunda kalmadan (umarız) olması gerektiği gibi davranan sekme başına bir kullanıcı uygulamanız vardır. Yine de, söz konusu sekmede oturum açmış olan her sekmede açıkça belirttiğinizden emin olun ...