- Jakie są zalety, aby zdobyć kapitał jako parametr
Principal principal
w kontrolerze sprężyny, a następnie przekazać je do warstwy usług na uzyskanie kapitału w warstwie usług natychmiast chociażSecurityContextHolder.getContext().getAuthentication().getPrincipal()
? - Jakie jest najlepsze podejście do pobierania danych podstawowych w warstwie usług bez sprawdzania obiektów o wartości null wszędzie (coś w rodzaju niestandardowego opakowania)?
Odpowiedz
-
- Twój API usługa będzie bardziej łatwy w użyciu. Bezpośrednio zobaczysz zależność od zleceniodawcy, więc nie możesz przez przypadek wywołać metody obsługi w środowisku, w którym nie istnieje zlecenie.
- Generalnie mniej zależności na kodzie SpringSecurity oznacza mniejsze problemy w przypadku migracji do nowej wersji Spring Security.
- Będziesz mógł ponownie użyć warstwy usługi w środowisku, w którym Spring Security nie istnieje.
- Przygotuj klasę opakowania (na przykład AuthenticationService). Dodaj do tego metodę getPrincipal(). Wprowadź swoje kontrole. Wstrzykiwanie usługi uwierzytelniania wszędzie za pośrednictwem bezpośrednich połączeń z SecurityContextHolder.
Jeśli potrzebuję uzyskać dane dla konkretnego użytkownika, myślę, że uzyskanie nazwy użytkownika (na przykład nazwy użytkownika) w warstwie usługi jest bezpieczniejsze, ponieważ między tym (ograniczeniem) a bazą danych jest mniej warstw. Jest to więc jedyne dao, które zostało w przeciwieństwie do zdobywania kapitału w kontrolerze (dodatkowa warstwa usług pomiędzy). Z drugiej jednak strony, jak już powiedziałeś, warstwa usługowa może być bardziej przydatna do ponownego użycia. Co sądzisz o tym? – Alex
Główny obiekt jest przechowywany i przechowywany w warstwie internetowej. Dla mnie wygląda to naturalnie, że zleceniodawca wszedł od contollera do warstwy serwisowej. Inną kwestią jest to, że zależności statyczne są złe dla testów jednostkowych: http://misko.hevery.com/2008/12/15/static-methods-are-death-to-testability/. Nie widzę żadnych problemów związanych z bezpieczeństwem, ponieważ instancja numeru końcowego jest niezmienna (i zazwyczaj hasło zostanie w tym momencie zerwane z rzeczywistej implementacji). Przepraszam za spóźnienie. Byłem przez długi czas AFK. –
Czy korzystanie z opcji 2 w rozszerzonej wersji BaseService (w warstwie serwisowej) jest bezpieczne? – Alex
- 1. Samouczek wiosny MVC od zera
- 2. Czy LocaleContextHolder bezpieczny w warstwie usług
- 3. Czy należy powielić sprawdzanie poprawności w mojej warstwie MVC i warstwie usługi?
- 4. Czy adnotacje na poziomie metody sprężynowania powinny być stosowane w warstwie kontrolera lub w warstwie usługi?
- 5. Jak materiały tekstowe odpowiedź od wiosny MVC 3.0 Java webapp
- 6. wiosny MVC żądania konwencje mapowania
- 7. Metody Crud w warstwie usług przy użyciu Spring Data JPA
- 8. Nie można pobrać użytkownika z kontekstu zabezpieczeń w środowisku testowym.
- 9. Korzystanie z kontekstu aplikacji dla pojedynczej wiosny dla aplikacji internetowej
- 10. A/B, Wielowariantowa badania z wiosny MVC
- 11. wiosny MVC z wielu widoków przeliczniki
- 12. wiosny Web MVC, @ModelAttribute i @RequestParam razem
- 13. Dostosowywanie wiosny 3 mvc: adnotacja dla RequestMappingHandlerMapping
- 14. Wzór wykonywania autoryzacji w warstwie repozytorium aplikacji MVC
- 15. Gdzie jest ścieżka kontekstowa kontekstu MVC?
- 16. jak uzyskać param w metodzie post wiosny mvc?
- 17. Co różni usługa śledzenia usług OSGi od usług deklaratywnych
- 18. C++ czy typ zmiennej zależy od kontekstu?
- 19. Konwersja do postaci pierwotnej zależy od kontekstu.
- 20. Unit Testing metodę zależną od kontekstu żądanie
- 21. DaoException: Entity jest odłączone od kontekstu DAO
- 22. Zrozumienie, jak MVC wiosny za @RequestMapping POST działa
- 23. Grails - uzyskanie wartości komunikatu od kontrolera
- 24. Uzyskanie klucza nieruchomości od wewnątrz wartości nieruchomości
- 25. Jak uniknąć konieczności odwoływania się do Entity Framework na mojej warstwie usług?
- 26. ReactJS komponent załadować plik do wiosny MVC serwera/Dane REST
- 27. Wiosna MVC - przesyłanie pliku jest blokowane przez ochronę wiosny
- 28. Od MVC do MVVM
- 29. Zmienić domyślny JSON odpowiedź Błąd od wiosny Boot Rest Controller
- 30. odkażania dane wprowadzane przez użytkownika z wiosny MVC ramach
Możesz znaleźć odpowiedzi na [to pytanie] (http://stackoverflow.com/questions/248562/when-using-spring-security-what-is-t-proper-way-to-obtain- current-username-i) przydatne. [Ta odpowiedź] (http://stackoverflow.com/questions/8764545/best-practice-for-getting-active-users-userdetails/8765597#8765597) również może być przydatna. –
Czy to dobre rozwiązanie, aby mieć klasę abstrakcyjną ze statyczną metodą, gdzie mogę umieścić 'SecurityContextHolder.getContext(). GetAuthentication(). GetPrincipal()'? Potem mogę go użyć w warstwie usług. – Alex
Przeczytaj drugi link, który dałem ci ponownie. Nie ma nic, co mogłoby Cię powstrzymać od użycia tego podejścia w twoich usługach i jeśli używasz interfejsu, możesz go również zamienić na testowanie. –