2017-09-26 62 views
5

Używam zabezpieczeń Spring w mojej aplikacji internetowej i używam do tego Javaconfig. Niedawno dodaliśmy także uwierzytelnianie Spring SAML w aplikacji i w końcu uruchomiliśmy je po pewnych przeszkodach. Wewnątrz WebApplicationInitializer 's onStartUp() ładuję konfigurację SpringSecurity lub SpringSaml na podstawie pewnych warunków wstępnych.Jak dynamicznie zmieniać kontekst aplikacji w Spring Security?

Jak mogę to zrobić dynamicznie? Właściwie to wprowadzę przycisk i po kliknięciu tego przycisku admin zostanie wylogowany, a wszyscy użytkownicy zostaną wylogowani, a kontekst powinien zostać ponownie załadowany. W tym momencie jego ok, jeśli system jest niedostępny przez jakiś czas i inicjuje kontekst aplikacji (co jest właściwie moim celem)?

Innymi słowy, w jaki sposób mogę wywołać metodę onStartUp() z WebApplicationInitializer?

+1

Myślę, że można to zrobić bez ponownego ładowania kontekstu aplikacji sprężynowej. Nawet jeśli kontekst zostanie odświeżony, możesz napotkać inne efekty uboczne. [To pytanie] (https://stackoverflow.com/questions/27545846/spring-integration-getting-exception-on-refreshing-application-context-2nd-time) daje możliwość odświeżenia kontekstu aplikacji z kontrolera, ale zakończyło się w różnych kwestiach. Jeśli możesz udostępnić część kodu konfiguracji, pomocne może być udzielenie lepszych odpowiedzi. – skadya

Odpowiedz

6

Używasz wiosennych profili środowiska do kontrolowania, która konfiguracja zabezpieczeń jest załadowana.

Aby przełączyć profil, należy zaktualizować plik konfiguracyjny z listą aktywnych profili i ponownie załadować aplikację.

Zobacz Spring Boot Reference Guide - 25. Profiles.

+0

Dzięki za odpowiedź Andreas. Czy możesz udostępnić programowo "ponownie załadować aplikację". ? – aProgrammer

+0

@ Programmer Jeśli użyjesz 'spring-boot-devtools', aktualizacja pliku konfiguracyjnego automatycznie uruchomi LiveReload: Zobacz [Spring Boot Reference Guide - 83. Hot swapping] (https://docs.spring.io/spring-boot /docs/current/reference/html/howto-hotswapping.html). – Andreas