Node.js'de Oturumları Yönetmek? [kapalı]


101

Node.js'de oturum değişkenlerini yönetmenin en iyi yolu nedir? Kütüphane var mı?

Yanıtlar:


95

Bunu kullanarak çok kolay bir şekilde yapabilirsiniz:

  • Bağlan: http://senchalabs.github.com/connect/

    Connects, Ruby'deki Rack gibidir. Diğerlerinin yanı sıra kimlik doğrulama, oturumlar, tanımlama bilgileri ile "oynayabileceğiniz" ekstra bir katman sağlar.

Diğer seçenek, çerçeveleri kullanmaktır:

  • Express.js: http://expressjs.com/

    En çok kullanılan node.js çerçevesi gibi görünüyor. Ruby için Sinatra gibidir ve bağlantının üstünde çalışır.

  • Geddy: http://geddyjs.org/

    Daha karmaşık WebApps yapmak istiyorsanız, Geddy sizin seçiminiz olacaktır. Ruby için Rails gibidir.


Geddy ne ifade ediyor? - Sinatra ve Rails ile aynı fark mı?
Michael

1

4
Sanırım Express'in Connect'in üzerine kurulu olduğunu söylemelisiniz - Connect ile uyumlu tüm özellikler veya eklentiler Express ile çalışacaktır.
Jonathan Dumanie'nin


14

Sadece memcache veya başka bir önbelleğe alma mekanizmasına boşaltın. Sunucularınıza bu tür şeylerle yük olmazdım. Bir şeyleri hatırlaması gereken süper zayıf bir web sunucusunun amacı nedir?

Ayrıca sitenizi bir web sitesi değil bir uygulama olarak geliştirmeyi dener ve web sitenizi bir uygulama olarak ele alır, html5'in yerel depolama / yerel veritabanları gibi harika özelliklerini kullanır ve sunucu ile istemci makineleri arasındaki trafik miktarını azaltırdım. .

Her şey başarısız olursa (veya site küçükse), o zaman sizi durduran şey kendi oturum sınıfınızı yazın. O kadar zor değil. Özellikle de bellek tipi bir şeyse. Oturumları zaman aşımına uğratmak için biraz zamanlayıcı mantığı koyun ve işte başlayın. JavaScript gibi dinamik bir dilde lanet olsun, çocuk oyuncağı olmalı.

Yapı, anahtar oturum ve değer, son iletişim ve yeteneklerin ayrıntılarını içeren bir nesne olan bir sözlük olmalıdır (belirli özelliklere erişimi sağlamak için). Zaman aşımına uğramış eski oturumları temizlemek için bir süpürme işlevi ekleyin. ve tombala. Temel bir oturum hizmeti. "Listede oturum anahtarıdır ... evet / hayır ... ayrıntıları al" ... ve sanırım bu .... veya eksik olduğum bir özellik var mı?

Şahsen mümkün olduğu kadar uzun süre üçüncü taraf araçlardan kaçınırdım. Zamanın kumları çok hızlı değişir ve her zaman kendi geliştirdiğiniz koda güvenebilirsiniz.


16
Tecrübelerime göre, yeni bir üçüncü taraf aracı her eklediğinizde, geliştirdiğiniz ürünün yaşam beklentisi için kendinizi o üçüncü tarafa bağlıyorsunuz. Bu kötü, birisinin kara kutuya alınmış iyi kod fikrini kontrol edememesi ve anlayamaması, yukarıda bahsedilen kara kutuda bir şeyler ters gittiğinde (her zaman oluyor) başa çıkmak çok zordur. Üçüncü şahıs lisans sözleşmelerine eklenmiş birçok feragatname bulacaksınız, "kendi riski altında kullanım" sıklıkla gördüğüm bir tanesidir. Zamanın kumları hızla değişir ve birisinin kodun 1.0 olduğunu söylemesi artık jack anlamına gelmez.
WeNeedAnswers

6
Kodu kendiniz programlayabiliyorsanız ve en önemlisi kodu anlayabiliyorsanız ve kod makul bir süre içinde geliştirilebiliyorsa, neden üçüncü taraf bir araç kullanasınız? Ve yazdığım tüm koda üçüncü bir şahıstan çok daha fazla güveniyorum. Ben bir mühendisim sanatçı değil, bazen kırılan ama asla çökmeyen kodlar geliştiriyorum. Test edilmemiş kod için hiçbir mazeret yoktur. Entegrasyon testi, birim testi, regresyon testi gibi araçlarla kodunuzun test edilmediğini söylemek için hangi bahaneyi kullanıyorsunuz? Yeteneklerinize daha fazla inanın. Herhangi bir üçüncü şahıs kadar iyisiniz.
WeNeedAnswers

10
Tartışmanızda o kadar çok boşluk var ki, nereden başlayacağımı bile bilmiyorum. 1) Neden üçüncü taraf bir araç kullanmalı: zaman ve enerjiden tasarruf etmek için. 2) Açık Kaynak! = Marka yok. Ekspres / Bağlantı ekipler tarafından yapılır ve çalışmaları büyük bir topluluk tarafından incelenmiştir. "Bir çocuk" değiller. 3) Jantların yeniden icat edilmesi zaman alır. Belki zamanınız bedava, çoğu insan değil. 4) Her vidayı, cıvatayı ve klipsi asla bilemezsiniz. Tüm modern yazılımlar çerçeveler üzerine inşa edilmiştir, herhangi bir kişinin her parçayı bilmesi için çok fazla şey vardır. Dürüst olmak gerekirse, bu fikirlerle profesyonel bir geliştirici olabileceğine inanmıyorum.
Kyeotic

6
Çerçeveler "sihirli değnek" değildir. Bir Çerçeveye karşı program yaptığınızda, başka birinin sizin için kodla ilgili büyük kararları kontrol etmesine izin vermiş olursunuz. Elbette bunu görebiliyor musun? Bu büyük kararların bir kez alındıktan sonra tekrar takip edilmesi çok zordur, Çerçeve çok kapsamlıysa, sizin için tüm önemli kararları verecektir. Çerçeveleri kullanmak, gerçek programlamayı da gizler. Bir Çerçeveye ilişkin yorumunuzu tanımlayın, birden fazla Çerçeve türü vardır. Bazı Çerçeveler programlama diline o kadar entegredir ki, bu durumda ben bu Programlama sistemleri olarak adlandırırım.
WeNeedAnswers

5
Size kişisel olarak asla hakaret etmedim, tartışmanızda boşluklar olduğunu söyledim ve sonra onları sıraladım. Siz! = Argümanınız. Dürüst olmak gerekirse, bu fikirlerle profesyonel bir geliştirici olabileceğine inanmıyorum dediğimde, genel "siz" demek istedim, özellikle sizi değil. Çerçeveler hakkındaki görüşleriniz, tüm modern yazılımların bunları kullandığı gerçeğini görmezden geliyor. Konumumun arkasındayım ve bu hiçbir yere gitmiyor. Kabul edilen cevaba, Express / Connect kullanmanın doğru yol olduğuna katılıyorum. Bu yüzden Ekspres savunmam.
Kyeotic


6

Donald'ın cevabı iyidir - bağlantı ara yazılımının soğan modeline girdiğinizde, ne tür bir oturum deposu kullanacağınıza karar vermelisiniz. Ekspres içindeki varsayılan olan bir MemoryStore'dur ve üretim kullanımı için tasarlanmamıştır. İşte seçeneklerinizden bazıları:

Mongo https://github.com/mikkel/express-session-mongo - 'native_parser: false' seçeneğini kullandığınızdan emin olun

Redis https://github.com/visionmedia/connect-redis - Çok iyi, ancak zaten redis'i pub / sub veya depolama için kullanmıyorsanız ideal olmayabilir.

Dikkat edin, başka seçenekler de vardır - bu sizin projenize bağlıdır. Mevcut teknoloji yığınınızdan yararlanarak tanıtabileceğiniz bir şey arayın.


3
"Express'te varsayılan olan bir MemorySrote'tur ve üretim kullanımı için tasarlanmamıştır" üzerine odaklanmak istiyorum. Engineering.linkedin.com/nodejs/… adresine gidin ve 7. noktayı okuyun
guiomie

4
Bu ilginç, öyleyse oturumları sürdürmüyorsa kullanıcı izinlerini nasıl yönetirsiniz?
Costa

2

Node.js kullanarak ciddi bir web geliştirme arıyorsanız, Express çerçevesini kullanın ; oturumları destekler.

Express projesini --sessions seçenekleriyle oluşturun.

$ express --sessions

Express'i yüklemek için:

$ npm install express -g

Artık desteklenmiyor. Sen eklemek zorunda cookie-sessionsenin için package.josnişin.
Victor Schröder
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.