2013-04-15 5 views
81

varsa denetleniyor?HTML5 LocalStorage: Bu işe yaramazsa neden önemli

if(typeof(localStorage.getItem("username"))=='undefined'){ 
    alert('no'); 
}; 

gol zaten yapmadıysanız giriş sayfasına indeks sayfasından kullanıcıyı yönlendirmektir. Burada localStorage.getItem("username")) değişken şu an için tanımlı değil.

Bir ios PhoneGap app için. MDN documentation

+0

kimsenin henüz söz konusu şaşırdım. Sadece F12'ye basabilir ve 'localStorage ['kullanıcı adı'] = 'admin’' komutunu çalıştırabilir ve ardından web sitenizle uğraşabilir. – oriadam

+1

@oriadam Hiç kimse localStorage üzerinde yetki dayandırarak olduğunu umuyoruz, ancak localStorage içinde JWT accessToken depolamak gayet olumlu. –

cevap

193

specification alıntı:

getItem (anahtar) yöntemi verilen anahtar ile ilişkili geçerli değer döndürmelidir. Belirtilen anahtar, nesne ile ilişkili listede yoksa, bu yöntem null değerini döndürmelidir. Aslında null karşı

kontrol etmelidir. Benim için

if (localStorage.getItem("username") === null) { 
    //... 
} 
+2

teşekkür eğer, bu benim ilk hataydı olabilir, bir şey gerekmez! Ama bu ile çok işi if (typeof (localStorage.getItem ("kullanıcı adı")) === null) { \t \t \t \t \t uyarı doesnt ('hayır') \t \t \t \t \t}; – Gabriel

+13

"null" ın türü "null" değil, null değil (umarım mantıklı olurum). – georg

+3

@Gabriel: 'typeof (..)' öğesini kaldır. Cevabımı tekrar kontrol et. – SuperSaiyan

10

getItem yöntem implementated olduğu gösterilmiştir: değeri ayarlanmamış

Object.defineProperty(oStorage, "getItem", { 
     value: function (sKey) { return sKey ? this[sKey] : null; }, 
     writable: false, 
     configurable: false, 
     enumerable: false 
    }); 

, bu null döndürür. undefined olup olmadığını görmek için test ediyorsunuz. Bunun yerine null olup olmadığını kontrol edin.

if(localStorage.getItem("username") === null){ 
+0

Doğru, yukarıdaki Thrustmaster'a cevap verdim. Ama daha iyi bu çalışmaz:/ – Gabriel

+0

Bu [benim için çalışıyor] (http://jsbin.com/osujaf/1/edit). – Quentin

+0

@Gabriel - Yukarıdaki yorumda 'typeof' değerini null olarak karşılaştırıyorsunuz. Gerçek değeri karşılaştırmalısınız. – Quentin

19

Bu yöntem eser:

if("username" in localStorage){ 
    alert('yes'); 
} else { 
    alert('no'); 
} 
+0

wow watta sözdizimi –

10

başka yoludur: - istemci tarafı güvenlik kesinlikle önermeyiz

if (localStorage["username"]) { 
    // 
} 
+1

'if (localStorage [" kullanıcı adı "] == undefined için kısa ') –

+6

Tam olarak değil -' if (localStorage [" kullanıcıadı "] == undefined || localStorage [" username "] için kısa == 0 || localStorage ["kullanıcı adı"] == null || localStorage ["kullanıcı adı"] == false || localStorage ["kullanıcı adı"] == '') '@AllanRuin – oriadam