Bạn thường không thể vô hiệu hóa (các) phiên của người dùng ngay khi bạn thay đổi thông tin tài khoản của mình mà không cần sử dụng API cụ thể của vùng chứa, vì cách duy nhất để truy cập HttpSession
là thông qua đối tượng HttpServletRequest
.
Thay vào đó bạn có thể lưu bộ nhớ cache tên người dùng trong cửa hàng trong bộ nhớ và tham khảo bộ lọc trong bộ lọc hoặc tùy chỉnh AccessDecisionVoter
. Việc sử dụng cờ trong bảng người dùng không thực sự là một ý tưởng tuyệt vời, vì cờ là tạm thời trong tự nhiên (nó không liên quan sau khi khởi động lại máy chủ) và tốt hơn là tránh truy cập hiệu suất của truy vấn cơ sở dữ liệu trên mọi yêu cầu.
Có một blog article on using custom voters cho loại điều này. Nó đã lỗi thời nhưng cách tiếp cận chung là âm thanh.
Cách tiếp cận khác là sử dụng SessionRegistry
của Spring Security là một phần của chức năng quản lý phiên. Thông thường, điều này được sử dụng để giới hạn số lượng phiên mà người dùng có thể có nhưng cũng có thể được sử dụng để list currently authenticated users hoặc đánh dấu phiên của họ là hết hạn.
Cũng có thể là ý tưởng chỉ cần tải lại các đặc quyền của người dùng thay vì ghi lại chúng hoàn toàn.
Nguồn
2011-12-12 22:20:16
Cảm ơn ý tưởng và cho các liên kết thông tin. Tôi sẽ cung cấp cho nó một shot và cho bạn biết làm thế nào nó đi. – kasdega
Điều này chỉ hoạt động nếu ứng dụng của bạn đang chạy trên một máy chủ. Là nó? – sourcedelica
Yep hiện chỉ có trên một máy chủ. Sẽ ghi nhớ điểm của bạn mặc dù khi chúng tôi chuyển sang nhiều máy chủ. – kasdega