Rails uygulamada "Beni hatırla" Uygulanması

oy
46

Benim Raylar-app beni hatırla onay kutusu kutuya bir işaret vardır. Bu onay kutusunu kullanıcılar bile tarayıcıyı kapattıktan sonra oturum açık kalmalıdır. Kullanıcıların kullanıcının oturumunda kendi kimliği depolayarak oturum olmadığını takip ediyorum.

Ama oturumları kalıcı değildir oturum çerezleri gibi Rails uygulanmaktadır. Ben yapabilirsiniz yapmak onları kalıcı:

class ApplicationController < ActionController::Base
  before_filter :update_session_expiration_date

  private

  def update_session_expiration_date
    options = ActionController::Base.session_options
    unless options[:session_expires]
      options[:session_expires] = 1.year.from_now
    end
  end
end

Ama bu tür ortak işlevsellik için şaşırtıcı bir hack gibi görünüyor. Daha iyi bir yolu var mı?

Düzenle

Gareth cevabı oldukça iyidir, ama (o benzersiz yüzünden hala Raylar 2 aşina birinden bir cevap istiyorum CookieSessionStore).

Oluştur 02/08/2008 saat 13:56
kaynak kullanıcı
Diğer dillerde...                            


8 cevaplar

oy
26

Neredeyse kesinlikle oturum tanımlama uzun ömürlü olması uzanan edilmemelidir.

Raylar ile özel olarak ilgilenen olmasa da bu makalede izah iyi uygulamaları 'Hatırlamama' için bazı uzunluk gider.

Eğer rağmen gerektiği Özetle:

  • Büyük bir rasgele değeri kabul etmek kullanıcı tabloya fazladan sütun ekleme
  • kullanıcı kimliği ve rastgele bir değer birleştirir istemci üzerinde uzun ömürlü bir çerez ayarla
  • yeni bir oturum başladığında, id / değer çerez bulunmadığını kontrol ve eğer eşleşirse yeni kullanıcının kimliğini doğrulamak.

Yazar ayrıca rastgele bir değer geçersiz ve her girişte de çerez sıfırlama önerir. Daha sonra iki bilgisayarda bir siteye bağlı kal olamaz gibi Şahsen ben sevmiyorum. Eminim benim şifre değiştirme fonksiyonu da böylece diğer makinelerde oturumları kilitleme rastgele değerini sıfırlamak yapmak eğiliminde olacaktır.

Son bir not, o oto doğrulanmış oturumlara kullanılamaz (şifre değiştirme / e-posta değişikliğini vb) belirli işlevleri yapmaya verir tavsiye olarak aşağıdaki değer ama nadiren gerçek dünyada görülür.

Cevap 02/08/2008 saat 17:10
kaynak kullanıcı

oy
10

Bu konuda düşünerek bir süre harcanan ve bazı sonuçlara varmıştır var. oturum çerezleri varsayılan olarak kurcalamaya dayanıklı, bu yüzden gerçekten bir çerez istemci ucunda değiştirilen konusunda endişelenmenize gerek yok Raylar.

İşte Yaptığım budur:

  • Oturum çerez uzun ömürlü olacak şekilde ayarlandığı (6 ay kadar)
  • oturumu deposunda İçinde
    • Bir + 24 saat giriş olarak ayarlanır tarihte 'sona eriyor'
    • Kullanıcı adı
    • Ben anonim kullanıcı sesssions izin böylece (çünkü çerez kurcalamaya korumanın tehlikeli değil) = true Kimliği doğrulanmış
  • Ben oturumun parçası 'ta sona erecek' denetler Uygulama Denetleyici bir before_filter ekleyin.

Kullanıcı, "Beni Hatırla" kutusunu kontrol ettiğinde, ben sadece oturumu set [: expireson] tarihi + 2 hafta giriş edilecek. Hiç kimse çerez çalabilir ve sonsuza giriş yapmış veya raylar oturum tanımlama kurcalamaya dayanıklı olduğu için başka bir kullanıcı olarak taklit kalır.

Cevap 16/09/2008 saat 22:37
kaynak kullanıcı

oy
9

Bunu gerçeklenimine hangi takmak RESTful_Authentication bakmak, ya da sadece dinlendirici Authentication_plugin kullanmak için uygulanmasını geçmek ya öneririm. Railscasts de bu eklentiyi kullanma hakkında iyi bir açıklaması vardır:

# 67 restful_authentication Railscasts

İşte eklenti kendisi için bir link

restful_authentication

Cevap 17/09/2008 saat 15:17
kaynak kullanıcı

oy
5

restful_authentication eklentisi bu iyi bir uygulama vardır:

http://agilewebdevelopment.com/plugins/restful_authentication

Cevap 06/08/2008 saat 22:30
kaynak kullanıcı

oy
3

Ben raylar için parlak bir kimlik doğrulama çözümü için hazırlamak için gider.

Cevap 16/01/2011 saat 05:26
kaynak kullanıcı

oy
3

Onların oturumu, sadece kendi kimliklerini devam etmek istemiyorum unutmayın. sitenize döndüğünüzde Sen onlar için yeni bir oturum oluşturmak gerekir. Genellikle sadece kullanıcıya bir GUID atamak, kullandığı çerezleri, sonra geri gelip onları aramak için kullanın yazın. Diğer kullanıcıların hesaplarını kaçırma kurnaz ziyaretçileri kolayca tahmin edilebilir olarak simgesi için kendi giriş adı veya kullanıcı kimliği kullanmak ve izin vermeyin.

Cevap 01/09/2008 saat 22:46
kaynak kullanıcı

oy
3

Bu 30 günlük kalıcı oturumları oluşturmak Biriniz deneyiminin oldukça iyi bir yazma-up.

UYARI: blog yayını 2006 dan

http://grahamglass.blogs.com/main/2006/05/rails_sessionsr.html

Cevap 03/08/2008 saat 02:53
kaynak kullanıcı

oy
2

Bu benim için bir cazibe gibi çalıştı:

http://squarewheel.wordpress.com/2007/11/03/session-cookie-expiration-time-in-rails/

Kullanıcı başka iki hafta ısrarla giriş yapmış olmak için yine kendi giriş kimlik sunmalıdır sayede Şimdi benim cookiestore oturumları, iki hafta sonra sona erer.

Bascially, bu kadar basit:

  1. satıcı bir dosya dahil / eklentileri dizin
  2. Sadece bir satırını kullanarak uygulama kontrolörü set oturumun geçerlilik süresi değeri
Cevap 20/09/2008 saat 09:58
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more