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.
Odpowiedz
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
Czy działa z Rails 4? – SsouLlesS
@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'. –
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.
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
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
proszę dodaj więcej informacji, aby uzyskać lepszą poradę: – ControlAltDel
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
@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. –