2015-12-18 13 views
5

Zainstalowałem istniejący projekt Maven na serwerze Tomcat w środowisku Windows7. Używam tomcat7, spring-security-core 3.1.0.Spring Security java.lang.IllegalArgumentException: Nie-heksadecymalny znak wejściowy

Jednak za każdym razem jestem zalogowaniu w moim webapp, otrzymałem błąd

java.lang.IllegalArgumentException: Non-hex character in input 

Kod działa perfekcyjnie w środowisku Linux. Więc myślałem, że to dlatego, że używam Windows 7 w moim lokalnym środowisku. Kiedy zaglądam do internetu, widzę, że jest to kwestia kodowania między linuxem i oknami.

Próbowałem konfigurowania

JAVA_TOOL_OPTIONS -Dfile.encoding = UTF8

, ale nie udało się. Proszę pomóż mi. Z góry dziękuję!

+0

Czy masz stacktrace dla tego wyjątku? – holmis83

Odpowiedz

1

Najprawdopodobniej podczas logowania, imprezy zdarzyć taka kolejność:

  1. Wiosna wybiera podmiot z DB przez użytkownika.
  2. Sprężyna musi sprawdzić wprowadzone hasło, aby dopasować je do zapisanego zakodowanego hasła.

Aby sprawdzić dopasowanie, Spring używa PasswordEncoder, który najprawdopodobniej został skonfigurowany.

Twój enkoder hasła oczekuje, że zapisane hasło kodowane jest ciągiem znaków w formacie szesnastkowym (wcześniej zakodowanym przez ten PasswordEncoder). W związku z tym próbuje dekodować CharSequence w bajcie [], ale kończy się niepowodzeniem (source).

Rozwiązaniem jest utrwalenie użytkowników za pomocą wcześniej zakodowanego hasła, np. przez BCryptPasswordEncoder.

0

Odpowiedź Alex Derkach jest właśnie dla mnie!
W moim przypadku mam DB z prostym hasłem sklepu (rozwijam) wygląda jak User = roor, psw = root.
Więc kiedy komentuję (usuwam) .passwordEncoder(new StandardPasswordEncoder("53c433t")); ! jego praca !! Ale jest źle, hasło musi być przechowywane w zaszyfrowanej formie !!!

0

Możliwe przyczyny to mieszanie enkoderów haseł. Istnieją różne implementacje PasswordEncoder. Na przykład, jeśli używasz SymmetricPasswordEncoder do kodowania i StandardPasswordEncoder do dekodowania, możesz otrzymać ten wyjątek.

Powiązane problemy