2010-08-22 40 views
19

Vì mục đích ghi nhật ký, tôi muốn tạo một trình ghi nhật ký tự động thêm ID phiên hiện tại vào các dòng được ghi nhật ký.
Đối với người dùng đăng nhập này không phải là một vấn đề:Lấy ID phiên có bảo mật mùa xuân

((WebAuthenticationDetails) SecurityContextHolder.getContext().getAuthentication().getDetails()) 
    .getSessionId() 

Vấn đề là, trước khi người dùng đã đăng nhập getAuthentication() lợi nhuận null. Có cách nào khác để nhận ID phiên không có tham chiếu đến phản hồi hiện tại hay bất kỳ thứ gì thuộc loại đó không?

Cảm ơn!

+0

Câu hỏi này trả lời câu hỏi của tôi. Cảm ơn. Cách tốt để đặt câu hỏi. – TRiNE

Trả lời

43

Bạn có thể sử dụng

RequestContextHolder.currentRequestAttributes().getSessionId(); 

này dựa trên Spring RequestContextHolder, vì vậy nó nên được sử dụng với Spring MVC của DispatcherServlet hoặc bạn nên có một RequestContextListener tuyên bố. Ngoài ra phiên sẽ được tạo nếu không tồn tại.

+0

Hoạt động như một sự quyến rũ! cảm ơn! – abyx

+0

@axtavt Tôi có applet góc chạy trong cổng diffrnt và mã máy chủ đang chạy trong cổng diffrnt. Trong mã máy chủ của tôi đã thực hiện bảo mật mùa xuân, nó chuyển hướng đến một bộ điều khiển java khác nếu thành công, trong đó tôi bao bọc tất cả các vai trò người dùng và thông tin khác. nhưng tôi nhận được chỉ một 'anonymusUser' bởi vì trong url chuyển hướng của tôi không có cookie. là vượt qua giải pháp của bạn .. – SakthiSureshAnand

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