2016-04-07 25 views
0

Angular SPA'mda bir JWT jetonunu saklaması gereken bir kimlik doğrulama hizmetim var. Böylece her seferinde başlıklara sunucuya geri gönderilebilir (API, kendi içinde bulunmasını gerektirir) Kimlik Doğrulama-Token başlıklı)Angular SPA'da kimlik bilgileri kaydetme

Şu an hizmetim hatıralarımı hafızada tutuyor, ancak bu sayfa yenilendiyse yeni bir oturum açmayı gerektiriyor ya da yeni bir sekmede bir sayfa açıyor, bu yüzden ayrıntılarını saklamam gerekiyor. biraz daha kalıcı. Görebildiğim kadarıyla bir kaç seçeneğim var ama bunların hiçbiri ideal değil

A) - Onları bir çerezde saklayın - Ama sonra her istek ile birlikte iki kez gönderilecek ve kullanıcı profili gibi diğer veriler yanında saklanması gereken veriler.

B) Yerel Depolama - Bu iyi bir seçenek gibi gözüküyor, ancak bir sınırı var ve dolu ise (bir veri önbellekleme servisinin dolduracağını söyleyebiliriz) o zaman ayrıntıları saklayamayacaktır. güvenilir

c) Oturum Depolama çevreleme için, kullanıcının tüm ayrıntıları saklamak için yeterli alan hiçbir şekilde var gibi gözüküyor -) Yukarıdaki gibi fakat çalışmıyor kullanıcı yeni bir sekme

d açarsa Var Her sayfadaki sunucudan gönderilen ayrıntılar yüklenir ve API'ye yapılan çağrılar yapılmadan önce bellekte saklamak için ng-init kullanılır. Bu iyi olurdu, ama benim sitem şu anda bir API çağırır düz bir HTML sitesi, şu anda bir PHP/Düğüm/.net sitesi değil, bu yüzden jeton almak için sunucu tarafı şeyler tanıtmak zorunda kaldım.

Peki, herhangi birinin daha iyi bir fikri var mı? Ya da bu sorunlardan herhangi biriyle çalışmanın herhangi bir yolu var mı?

+1

Benzer bir sorunla karşılaştık, kullanıcının süresiz olarak oturumda kalmasına izin veren bir gereksinimimiz vardı. Yerel Depolama'yı kullandık ve bir çerez tabanlı yenileme simgesiyle destekledik. Bir 403 meydana geldiğinde, http interceptor, yenileme jetonu çerezini kullanarak yeni bir jetonu yeniden talep edecektir. –

cevap

1

Normalde LocalStorage veya SessionStorage (gereksinimlere bağlı olarak) kullanıyorum. Sınır, kaynağı başına 10MB (yerel & oturumu) kombine edilir, bu nedenle uygulamanızda bunu yönetebilmeniz veya kimlik bilgilerinin korunduğundan emin olmanız için başka bir yol bulabilmeniz gerekir.

+0

Sanırım haklı olabilirsin, benim endişem, ihtiyaç duyduğu kadar yer kaplayacak başka birinin servisini kullanmam gerekebilir. Örneğin, bazı önbelleğe alma hizmetleri, yalnızca alan tükenene kadar verileri önbelleğe almayı sürdürür, bu noktada kimlik bilgilerimi güncelleyemeyebilirim. Tahmin edilebilecek en kötüsü, ya önbelleği boşaltmam ya da kullanıcının tekrar giriş yapması gerektiğidir. – jonhobbs

+0

"başkasının servisi"? Bununla ne demek istediğinden emin değilim. Üçüncü taraf bir angularjs servisi kullanıyorsunuz ve ne yaptığından emin değil misiniz? – Paul

+0

Evet, demek istediğim, eğer bir grup üçüncü parti kütüphanesi kullanıyorsanız, yerel depolamayı kullanmanız ve onu doldurabilmeniz mümkündür. Daha da kötüsü, ya da boşluk gerekiyorsa kimlik bilgilerinizi silebilir. Ya da silmek için değişkeninizin adını bilmek gerekir? – jonhobbs

İlgili konular