2012-04-20 4 views
14

Mam aplikację szyny 3 wykorzystującą narzędzie do uwierzytelniania i chcę używać javascript do sprawdzania, czy użytkownik jest zalogowany. Jaki jest najlepszy sposób na zrobienie tego?Używaj javascript do sprawdzania, czy zalogowałeś się przy pomocy narzędzia graficznego.

+0

proszę dodaj więcej informacji, aby uzyskać lepszą poradę: – ControlAltDel

+0

Jakie dalsze szczegóły mogą być konieczne? Używam devise do uwierzytelniania w mojej aplikacji i chcę wiedzieć, jak sprawdzić, czy użytkownik jest uwierzytelniony za pomocą javascript? – Solomon

+0

@Solomon: Nie wiem, jak działa Rails, ale możesz sprawdzić pliki cookie (PHP) lub ukryte dane wejściowe (ASP.NET), aby zobaczyć identyfikator sesji. –

Odpowiedz

15

Od Devise opiera się na Warden, można użyć wywołania zwrotne naczelnika ustawić dodatkowy plik cookie, który będzie widoczny z js (w przeciwieństwie do serwera tylko sesja cookie), na przykład w devise.rb:

Warden::Manager.after_set_user do |user,auth,opts| 
    auth.cookies[:signed_in] = 1 
    end 

    Warden::Manager.before_logout do |user,auth,opts| 
    auth.cookies.delete :signed_in 
    end 
+1

Czy działa z Rails 4? – SsouLlesS

+1

@SouLlesS Prawie. Musiałem zmienić linię kasowania (z jakiegoś powodu "cookies.delete" nie usuwało ciasteczka z przeglądarki. Przy logoutu przypisałem '0' jako' wartość' i 'wygaśnięcie' do' Time.now'. –

-2

Wygląda na to, że Rails przechowuje sesje na kliencie w numerze cookies.

bym sprawdzić cookies w swojej aplikacji, gdy jesteś zalogowany (console.log(document.cookies)) i zobaczyć, co tam jest, że jest nie tam, gdy jesteś wylogowany.

W ten sposób łatwo zobaczysz, jak sprawdzić, czy masz połączenie z klientem.

+0

to jest to, co otrzymuję, gdy sprawdzam document.cookie, i nie robi tego ". t zrobić różnicę, jeśli jest zalogowany lub wylogowany: __utma = 111872281.2045911381.1309470856.1334590129.1334935149.157; __utmz = 111872281.1309470856.1.1.utmcsr = (bezpośredni) | utmccn = (bezpośredni) | utmcmd = (brak); __utmc = 111872281 – Solomon

+1

Pliki cookie są HttpOnly, co oznacza, że ​​nie można ich odczytać z javascript. Aby to działało, myślę, że musisz ustawić własny plik cookie. – Steve