2016-10-20 14 views
5

Chúng tôi có một ứng dụng lò xo khởi động độc lập, nơi mà chúng tôi muốn thiết lập quyền truy cập đăng nhập mô hình như vậy màCách đặt yêu cầu thuộc tínhThuộc tínhĐược bật cho AccessLogValve trong Apache Tomcat, trong ứng dụng khởi động vào mùa xuân?

  • X-Forwarded-For tiêu đề tồn tại trong yêu cầu: Nó nên được bao gồm trong các bản ghi như trường đầu tiên
  • X chuyển tiếp-cho- tiêu đề không tồn tại trong yêu cầu: cần thay thế bằng địa chỉ iP từ xa

Khi chúng ta chạy ứng dụng của chúng tôi với các thiết lập sau đây, chúng tôi chỉ nhận được ip từ xa địa chỉ

server.tomcat.accesslog.directory=<path_to_log_director> 
server.tomcat.accesslog.enabled=true 
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b 
server.tomcat.accesslog.prefix=access_log 
server.tomcat.accesslog.suffix=.log 

ví dụ:

192.168.25.265 - - - [12/Sep/2016:10:20:56 +0200] "GET /myapp HTTP/1.1" 200 125922 

Chúng tôi cũng đã cố gắng để thiết lập server.tomcat.accesslog.pattern tài sản để

%h %{X-Forwarded-For}i %l %u %t "%r" %s %b 

sau đó chúng ta có được cả hai địa chỉ IP từ xa và X-Forwarded-For giá trị tiêu đề.

ví dụ:

192.168.25.265 192.168.21.65 - - - [12/Sep/2016:10:20:56 +0200] "GET /myapp HTTP/1.1" 200 125922 

Tuy nhiên, dựa vào liên kết https://tomcat.apache.org/tomcat-7.0-doc/config/valve.html, tomcat hỗ trợ yêu cầu này bao gồm địa chỉ IP từ xa khi x-chuyển-cho không tồn tại. Điều này có thể đạt được bằng cách thêm thuộc tính 'requestAttributesEnabled'

Chúng tôi đã cố gắng thêm thuộc tính server.tomcat.accesslog.requestAttributesEnabled nhưng không có hiệu lực nào diễn ra.

Nó không xuất hiện để được thực hiện kể từ khi nó không được trình bày ở đây: http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

Chúng tôi thực hiện một cách giải quyết bằng một thực hiện EmbeddedServletContainerCustomizer, như đã đề cập trong How do I configure the location and name of tomcat access log in spring-boot?, nơi chúng tôi đã thêm:

accessLogValve.setRequestAttributesEnabled(true); 

và nó hoạt động như mong đợi.

Tuy nhiên chúng tôi muốn để có thể thiết lập các requestAttributesEnabled như một thuộc tính cấu hình thông qua lò xo khởi động, như:

server.tomcat.accesslog.requestAttributesEnabled=true 

chứ không có nhu cầu sử dụng tùy biến này trong tất cả các dịch vụ của chúng tôi.

Có giải pháp nào tốt hơn cho vấn đề này không, có một thuộc tính nào khác được sử dụng hay đó là tính năng có thể được mong đợi sẽ được phân phối trong tương lai gần?

+0

Bạn đang sử dụng khung ghi nhật ký nào? –

Trả lời

3

Bạn nói đúng, thuộc tính này không được hiển thị trực tiếp và những gì bạn đã làm là phương pháp được đề xuất. Có nói rằng, tôi đã tạo ra #7367 để thảo luận có hay không chúng ta nên thêm cái đó làm thuộc tính dựng sẵn. Vui lòng xem vấn đề đó để biết thêm thông tin cập nhật. Cảm ơn!

+0

Âm thanh tuyệt vời, cảm ơn bạn! – sebos

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