2012-08-05 6 views
13

Jaki jest najlepszy sposób uwierzytelniania?Bezpieczeństwo w pliku angular.js z Ruby on Rails

na frontend używam angularjs

na backend: Ruby on Rails

Rails aplikację używając jako API dla mojego frontend.

UPDATE: To będzie pojedyncza aplikacja strona. Frontend będzie rozwijany w Angular.js, backend w Ruby on Rails. W idealnej chcę zbudować backend jako zbiór zasobów zwróconych w json.

Przeszukuję najlepszą metodę wdrażania zabezpieczeń.

Gdy użytkownik otwiera aplikację, muszę sprawdzić, czy użytkownik jest uwierzytelniony. Jeśli nie - przejdź do strony logowania, Po uwierzytelnieniu - otwórz, że chce i zwróć potrzebny zasób z zaplecza.

Myślę, że muszę przechowywać token uwierzytelniający po stronie klienta. Jaka jest najlepsza metoda jej wygenerowania, a może Railsy już ją generują?

+0

Myślę, że wiem, w jakim kierunku zmierzasz z pytaniem. Osobiście to również mnie interesuje. Może jednak możesz trochę przeformułować. Czy możesz określić, jakie dokładnie problemy chcesz rozwiązać, zamiast zadawać to pytanie w ogóle. –

Odpowiedz

4

Nie znam Angular.JS w ogóle, ale postaram się podać ogólne informacje na temat szyn, których można używać z dowolną strukturą JavaScript.

przypadku uwierzytelniania, po prostu potrzebuje:

  • Wzór użytkowników
  • kontroler, który obsługuje logowanie, ta metoda użytkownik check login/hasło, należy utworzyć obiekt sesji z wszystkimi informacjami niezbędnymi (sesja jest przechowywany po stronie serwera i plik cookie jest używany na stronie klienta skojarzyć każdą prośbę do sesji)
  • sterownik do obsługi wylogowania, które w zasadzie tylko zniszczenia sesji użytkownika

Masz dobrą implementację in the rails tutorial here lub możesz znaleźć kilka wtyczek (authlogic wydaje się być zaleceniem użytkowników stackoverflow here).

Następnie, istnieje kilka różnic między uwierzytelniania manipulacyjny z statycznych stron HTML lub z AJAX:

  • Żądanie HTML wyśle ​​login i hasło do sterownika, który automatycznie przekieruje go do innej wewnętrznej stronie jeden raz sesja tworzyć
  • W AJAX, javascript po stronie klienta należy wysłać ajax wniosek, poszukaj odpowiedzi przez serwer (sukces/awarii) i uruchomić dostosowane działania (komunikat jeśli awaria, przekierowanie czy sukces)

W obu przypadkach ważne jest sprawdzenie, czy użytkownik jest uwierzytelniony u każdego kontrolera, w przeciwnym razie każdy mógł rozpocząć działanie lub uzyskać dostęp do informacji wewnętrznych.

1

Próbuję zrobić coś podobnego i znalazłem tę przykładową aplikację, która jest bardzo przydatna, żeby mnie idą w dobrym kierunku: https://github.com/karlfreeman/angular-devise

Zamówienie Również dalsza dyskusja na ten temat tutaj: https://github.com/karlfreeman/angular-devise/issues/1

A oto kolejna transakcja repozytoryjna, która przyjmuje nieco inne podejście: https://github.com/colindensem/demo-rails-angularjs

Skończyło się na pożyczaniu pomysłów ze wszystkich powyższych. Oto działające demo, jeśli ktoś jest zainteresowany: https://github.com/jesalg/RADD