Konfiguruję Spring Security, aby obsługiwał logujących się użytkowników. Zalogowałem się jako użytkownik i po pomyślnym zalogowaniu jestem przenoszony na stronę błędu odmowy dostępu. Nie wiem, jakie role faktycznie przypisano mojemu użytkownikowi ani jaka reguła powoduje odmowę dostępu, ponieważ nie mogę dowiedzieć się, jak włączyć debugowanie dla biblioteki Spring Security.
Mój plik XML bezpieczeństwa:
<?xml version="1.0" encoding="UTF-8"?>
<beans ... >
<!-- security -->
<security:debug/><!-- doesn't seem to be working -->
<security:http auto-config="true">
<security:intercept-url pattern="/Admin**" access="hasRole('PROGRAMMER') or hasRole('ADMIN')"/>
<security:form-login login-page="/Load.do"
default-target-url="/Admin.do?m=loadAdminMain"
authentication-failure-url="/Load.do?error=true"
username-parameter="j_username"
password-parameter="j_password"
login-processing-url="/j_spring_security_check"/>
<security:csrf/><!-- enable Cross Site Request Forgery protection -->
</security:http>
<security:authentication-manager>
<security:authentication-provider>
<security:jdbc-user-service data-source-ref="loginDataSource"
users-by-username-query="SELECT username, password, active FROM userinformation WHERE username = ?"
authorities-by-username-query="
SELECT ui.username, r.rolename
FROM role r, userrole ur, userinformation ui
WHERE ui.username=?
AND ui.userinformationid = ur.userinformationid
AND ur.roleid = r.roleid "
/>
<security:password-encoder hash="md5"/>
</security:authentication-provider>
</security:authentication-manager>
</beans>
Próbowałem też dodać log4j.logger.org.springframework.security=DEBUG
do mojego log4j.properties
Jak mogę uzyskać wyniki debugowania dla Spring Security?
debugging
spring-security
Martin Carney
źródło
źródło
Odpowiedzi:
Zakładając, że używasz Spring Boot, inną opcją jest umieszczenie w
application.properties
:To samo dotyczy większości innych modułów Spring.
Jeśli nie używasz Spring Boot, spróbuj ustawić właściwość w konfiguracji logowania, np. Logback.
Oto również wersja application.yml:
źródło
application.properties
jest funkcją Spring Boot. Jeśli nie używasz Spring Boot, możesz ustawić poziom logowaniaorg.springframework.security
w inny sposób (np. W swoim logback.xml).org.springframework.web.cors
aby włączyć dzienniki procesora Cors.Możesz łatwo włączyć obsługę debugowania, korzystając z opcji
@EnableWebSecurity
adnotacji:@EnableWebSecurity(debug = true) public class SecurityConfiguration extends WebSecurityConfigurerAdapter { … }
źródło
EnableWebFluxSecurity
to, że nie ma opcji debugowaniaPodstawowe debugowanie za pomocą Springa
DebugFilter
można skonfigurować w następujący sposób:źródło
Możesz łatwo włączyć obsługę debugowania za pomocą opcji dla adnotacji @EnableWebSecurity:
Jeśli potrzebujesz kontroli specyficznej dla profilu, w pliku aplikacji- {profil} .properties
Uzyskaj szczegółowy post: http://www.bytefold.com/enable-disable-profile-specific-spring-security-debug-flag/
źródło
Wiosenne rejestrowanie zabezpieczeń dla reaktywnych aplikacji webflux jest teraz dostępne od wersji 5.4.0-M2 (jak wspomniał @bzhu w komentarzu Jak włączyć rejestrowanie dla Spring Security? )
Dopóki to nie trafi do wydania GA, oto jak uzyskać to wydanie przełomowe w gradle
źródło
Domyślnie Spring Security przekierowuje użytkownika na adres URL, którego pierwotnie zażądał (w twoim przypadku /Load.do) po zalogowaniu.
Możesz ustawić always-use-default-target na true, aby wyłączyć to zachowanie:
źródło