2013-08-22 13 views
7

jestem bada tworzenia pojedynczej strony aplikacje wykorzystujące następujące stos (otwarty na sugestie tutaj)Bezpieczeństwo i lokalizacja za pomocą Angulara w aplikacji z jedną stroną?

  • kątowa
  • JQuery
  • ASP.Net MVC 4
  • Entity Framework 5

Jestem sprzedawany na tym stosie i kątowy, ale jest kilka rzeczy, których nie jestem pewien. Różni użytkownicy mają różne role i będziemy musieli ukrywać/pokazywać określone strony i/lub kontrolki na stronach w zależności od roli. Jestem zaznajomiony z niektórymi rozwiązaniami dla bardziej tradycyjnych aplikacji internetowych, ale nie jestem pewien, od czego zacząć, jeśli chodzi o pojedynczą aplikację strony.

Miałem nadzieję, że nie będę używał częściowych widoków MVC, a jedynie wysyłam i traktuję kod serwera jak WebApi. Ale czy kątowe musiałoby obsłużyć wszystkie szablony, a to oznaczałoby, że ktoś miałby dostęp do szablonu na interfejsie i może być w stanie wymyślić funkcje wywołania, których nie powinien? A może powinienem sprawdzić rolę w metodach WebAPI i upewnić się, że mają one odpowiednią rolę?

Następnym problemem jest lokalizacja. Będziemy musieli obsługiwać wiele języków. Miałem nadzieję, że możemy mieć tylko różne pliki językowe, en_gb.XML i które zawierają klucze i ich różne tłumaczenia. Następnie, jeśli użytkownik zmienił język chciałbym może po prostu być w stanie coś zmienić w kątowym być może przy użyciu wartości

angular.value("language", 'en_gb.js'); 

lub

angular.value("language", 'en_gb.xml'); 

Czy ktoś rozwiązać tego rodzaju problemów.

Odpowiedz

4

Mogę pomóc ci w kwestii bezpieczeństwa tutaj. Musisz zaimplementować niestandardową niestandardową logikę, aby ukryć \ pokazać elementy na podstawie roli użytkownika. Dopóki możesz przekazać informacje o roli użytkownika do klienta, możesz zaimplementować taką logikę show \ hide. Należy pamiętać, że logika show \ hide powinna być obsługiwana przez serwer, lub każdy może zmieniać dane po stronie klienta i uzyskać dostęp do funkcji.

Jednym ze sposobów osiągnięcia tego będzie powrót do szablonów po stronie serwera (widoki częściowe) do klienta w celu renderowania (zarówno obsługa ng-include, jak i ng-view obsługa szablonów ładujących serwer).Serwer może zweryfikować, czy użytkownik ma prawa dostępu i zwraca pustą odpowiedź po niepowodzeniu. Więc nie ma możliwości wycieku informacji.

Podobna kontrola może zostać dodana do wszystkich wywołań webapi i zwrotu nieautoryzowanego kodu statusu użytkownikowi końcowemu.

5

Bezpieczeństwo: Powinieneś pozwolić AngularJS kontrolować wszystko w widoku, jak szablon, widoki częściowe itp., Ponieważ AngularJS jest w pełni funkcjonalnym frameworkiem Front-End. Ponieważ jest to tylko Front-End Framework, nie jest odpowiedzialny za dane serwera, więc po prostu wykonuj wywołanie RESTful w celu pobrania/zapisania/aktualizacji/usunięcia danych. I nie jest również odpowiedzialny za bezpieczeństwo, więc to, co nazywasz "WebApi" MUSI być w 100% zabezpieczone po stronie serwera. Tak więc, nawet jeśli ktoś jest w stanie dowiedzieć się, do jakiego połączenia nie jest uprawniony, połączenie nie powiedzie się, ponieważ jego poświadczenia zostaną sprawdzone po stronie serwera. Nadal są ataki złośliwych programów, na które AngularJS ma odpowiedź. Zobacz sekcję "dotycząca ochrony" pod numerem http://docs.angularjs.org/api/ng. $ Http.

Lokalizacja: AngularJS obsługuje lokalizację dla waluty, daty i numeru. Ale w przypadku ciągów w twoim interfejsie nie ma nic wbudowanego w langage. Musisz zbudować własną odpowiedź. Istnieje kilka prób uzyskania tłumaczenia za pomocą AngularJS, na przykład tutaj: https://github.com/firehist/grunt-angular-translate

+0

Dzięki. Więc potwierdziłeś moje przemyślenia na temat części zabezpieczającej. Po prostu sprawdź role w WebApi. Jeśli chodzi o język, myślę, że spróbuję wykonać własne. Może przy użyciu fabryk i niektórych szablonów mogę to naprawić. Dzięki za link. Popatrzę na to teraz. – uriDium