Végrehajtása „Emlékezz rám” egy Rails alkalmazás

szavazat
46

Saját Rails-app van egy jel doboz „emlékezzen rám” jelölőnégyzetet. Azon felhasználók, akik ellenőrzik, hogy doboz bejelentkezve marad még bezárása után a böngésző. Én annak nyomon követését, hogy a bejelentkezett felhasználó tárolja az id a felhasználói munkamenet.

De ülések végre Rails session cookie-kat, amelyek nem tartós. Tudom , hogy azokat tartós:

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

De úgy tűnik, mint egy hack, ami meglepő az ilyen közös funkcionalitást. Van-e jobb megoldás?

szerkesztése

Gareth válasz elég jó, de mégis szeretnék választ kapni, hogy valaki ismeri a Rails 2 (mert ez egyedi CookieSessionStore).

A kérdést 02/08/2008 13:56
a forrás felhasználó
Más nyelveken...                            


8 válasz

szavazat
26

Akkor szinte biztosan nem kiterjesztené a session cookie-rég élt.

Bár nem foglalkozik kifejezetten sínek ezt a cikket megy hosszasan magyarázni „Emlékezz rám” legjobb gyakorlatokat.

Összefoglalva, bár akkor:

  • Adjunk hozzá egy extra oszlopot a felhasználói tábla fogadja a nagy véletlen érték
  • Állítsa be a hosszú élettartamú sütit a kliens, amely egyesíti a felhasználói azonosító és a véletlen érték
  • Amikor egy új munkamenetet kezd, léteznek-e az id / érték süti és hitelesítésére az új felhasználót, ha azok megegyeznek.

A szerző azt is javasolja, érvénytelenítve a véletlen érték és a süti minden bejelentkezéskor. Személy szerint én nem szeretem, hogy ha majd nem marad bejelentkezve marad a webhelyen két számítógépen. Azt inkább, hogy arról a jelszót változó funkció is visszaállíthatja a véletlen érték tehát lezárásához ülés más gépeken.

Mint egy utolsó megjegyzés, tanácsot is ad az, hogy bizonyos funkciók (jelszó megváltoztatása / e-mail váltás stb.) Nem érhető el az automatikus hitelesített munkamenet megéri következő, de ritkán látott a világban.

Válaszolt 02/08/2008 17:10
a forrás felhasználó

szavazat
3

Ez egy nagyon jó írás-up az egyik srác tapasztalat, ami 30 napos tartós ülés.

FIGYELEM: blogbejegyzést 2006

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

Válaszolt 03/08/2008 02:53
a forrás felhasználó

szavazat
5

A restful_authentication plugin egy jó végrehajtása során:

http://agilewebdevelopment.com/plugins/restful_authentication

Válaszolt 06/08/2008 22:30
a forrás felhasználó

szavazat
3

Vegye figyelembe, hogy nem szeretné, hogy továbbra is fennállnak a munkamenet, csak az identitásukat. Majd egy friss munkamenet őket, amikor visszatér a webhelyére. Általában csak rendelni egy GUID a felhasználó, azt írja, hogy a cookie-, akkor használd keresni őket, amikor jönnek vissza. Ne használja a bejelentkezési név vagy felhasználói azonosító a token, mert könnyen kitalálható, és lehetővé teszi a látogatók ravasz eltéríteni más felhasználói fiókok.

Válaszolt 01/09/2008 22:46
a forrás felhasználó

szavazat
10

Töltöttem egy darabig gondolkodtam ezen, és jött néhány következtetést. Sínek cookie-k hamisíthatatlan alapértelmezésben, ezért igazán nem kell aggódnia a cookie módosítását az ügyfél végén.

Itt van, amit tettem:

  • Session cookie van beállítva, hogy hosszú életű (6 hónap múlva)
  • Bent a munkamenet áruház
    • A „lejár” dátum van beállítva, a bejelentkezéshez + 24 óra
    • Felhasználói azonosító
    • Hitelesített = true, így tudom hogy anonim felhasználó sesssions (nem veszélyes, mert a cookie szabotázs védelem)
  • Adhatok egy before_filter az Application Controller, amely ellenőrzi a „lejár” session része.

Amikor a felhasználó ellenőrzi a „Remember Me” doboz, csak a munkamenet [: expireson] időpont jelentkezned + 2 hét. Senki sem tudja ellopni a cookie legyen bejelentkezve örökre, vagy álcázzák magukat egy másik felhasználó, mert a sínek session cookie hamisíthatatlan.

Válaszolt 16/09/2008 22:37
a forrás felhasználó

szavazat
9

Azt javasoljuk, hogy vagy megnézzük a RESTful_Authentication dugó, amelynek végrehajtása a, vagy csak kapcsolja be a végrehajtás használni a RESTful Authentication_plugin. Van egy jó magyarázat, hogyan kell használni ezt a dugót a Railscasts:

railscasts # 67 restful_authentication

Itt van egy link a plugin magát

restful_authentication

Válaszolt 17/09/2008 15:17
a forrás felhasználó

szavazat
2

Ez működött, mint egy varázslat számomra:

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

Most a CookieStore ülés lejár két hét után, ahol a felhasználónak kell benyújtaniuk bejelentkezési adatait újra annak érdekében, hogy tartósan bejelentkezett még két hétig.

Bascially, ez olyan egyszerű, mint:

  1. köztük egy fájlt az eladóval / plugins könyvtárban
  2. beállított munkamenet lejárati érték alkalmazása vezérlővel csak egy sort
Válaszolt 20/09/2008 09:58
a forrás felhasználó

szavazat
3

Azt megy kitalál egy ragyogó hitelesítési megoldás sínekhez.

Válaszolt 16/01/2011 05:26
a forrás felhasználó

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