2015-12-18 13 views
5

Tôi đã triển khai một dự án Maven hiện có trong Máy chủ Tomcat của tôi trên môi trường Windows7. Tôi đang sử dụng tomcat7, Spring-Security-Core 3.1.0.Bảo mật mùa xuân java.lang.IllegalArgumentException: Ký tự không phải hex trong nhập

Tuy nhiên, mỗi lần tôi đăng nhập vào ứng dụng web của tôi, tôi nhận được một lỗi

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

Mã này được làm việc hoàn toàn tốt đẹp trong môi trường Linux. Vì vậy, tôi đã nghĩ rằng đó là bởi vì tôi đang sử dụng windows7 trong môi trường địa phương của tôi. Khi tôi nhìn vào internet tôi thấy đó là vấn đề mã hóa giữa linux và windows.

tôi đã cố gắng thiết lập

JAVA_TOOL_OPTIONS -Dfile.encoding = UTF8

nhưng đã không thành công. Hãy giúp tôi ra. Cảm ơn trước!

+0

Bạn có stacktrace cho ngoại lệ đó không? – holmis83

Trả lời

1

Nhiều khả năng, khi đăng nhập, những sự kiện xảy ra là lệnh như vậy:

  1. Xuân chọn một thực thể từ DB bởi tên người dùng.
  2. Mùa xuân phải kiểm tra mật khẩu đã nhập để khớp với mật khẩu được mã hóa được lưu trữ.

Để kiểm tra trận đấu, Spring sử dụng PasswordEncoder, mà bạn có nhiều khả năng được định cấu hình.

Bộ mã hóa mật khẩu của bạn hy vọng rằng mật khẩu được mã hóa được lưu trữ là chuỗi char thập lục phân (trước đây được mã hóa bởi PasswordEncoder này). Vì vậy, nó cố gắng giải mã CharSequence thành byte [], nhưng không thành công (source).

Giải pháp là duy trì người dùng với mật khẩu được mã hóa trước đó, ví dụ: bởi BCryptPasswordEncoder.

0

Trả lời Alex Derkach phù hợp với tôi!
Trong trường hợp của tôi, tôi có DB với mật khẩu lưu trữ thẳng (phát triển) trông giống như User = roor, psw = root.
Vì vậy, khi tôi nhận xét (xóa) .passwordEncoder(new StandardPasswordEncoder("53c433t")); ! công việc của mình
!! Nhưng sai, mật khẩu phải được lưu trữ dưới dạng mã hóa !!!

0

Lý do có thể cho việc này là trộn bộ mã hóa mật khẩu. Có các triển khai khác nhau của PasswordEncoder. Và, ví dụ: nếu bạn sử dụng SymmetricPasswordEncoder để mã hóa và StandardPasswordEncoder để giải mã, bạn có thể nhận ngoại lệ này.

Các vấn đề liên quan