2016-11-07 38 views
6

Tất cả an ninh http được áp dụng khi khởi động:Configure Xuân HTTP an ninh tại Runtime

protected void configure(HttpSecurity http) throws Exception { 
    http 
     .authorizeRequests() 
     .antMatchers("/admin/**").hasRole("admin") 
} 

Trong thời gian chạy, tôi đang cố gắng để gắn thêm vào nó ...

applicationContext.getBean(WebSecurityConfigurerAdapter).http.authorizeRequests().antMatchers("bla").hasRole("admin") 

Khi dòng sẽ được thực thi , nó thêm nó vào http.authorizeRequests() nhưng/bla vẫn có thể truy cập bởi "non admins"

Khi máy chủ khởi động lại, thay đổi này có hiệu lực vì nó đang tải bla từ cơ sở dữ liệu.

Làm cách nào để bảo mật có hiệu lực ngay lập tức mà không cần khởi động lại máy chủ?

+0

bạn có nhận được giải pháp để làm điều này không? – theLearner

+0

nope, nếu bạn biết một xin vui lòng chia sẻ: D –

Trả lời

0

Bạn đang cố gắng năng động thay đổi một bean mùa xuân tại thời gian chạy mà rất khó làm trừ khi bạn sử dụng các công cụ như spring-loaded hoặc JRebel. Có rất nhiều SO về nó:

  1. Update spring beans dynamically. Is it possible?
  2. dynamically change spring beans
  3. Can I replace a Spring bean definition at runtime?

Cách tiếp cận tốt nhất (theo ý kiến ​​của tôi) đối với trường hợp sử dụng của bạn là sử dụng các cấu mùa xuân.
Xác định bean có ủy quyền cho/bla và một bean khác không có. Sau đó, sử dụng chúng trong các cấu hình khác nhau.

xem dynamically declare beans at runtime in Spring

+1

Vấn đề ở đây là ông đang sửa đổi các cấu hình đậu. Tôi nghĩ rằng sửa đổi các securityfilterchain tại thời gian chạy sẽ là một tùy chọn nếu chuỗi cơ bản có thể truy cập. Nhưng đúng là rất nhiều hạt đậu mùa xuân không có nghĩa là gì và bạn cần phải bọc những hạt giống như vậy với các đại biểu để bạn có thể xây dựng lại các bộ tộc nếu cần thiết. –

+0

100% cấu hình, tiểu sử + lớp học trên mỗi tiểu sử của bạn sẽ không hoạt động vì không có cách nào để biết khả năng. Http: //www.authorizeRequests(). UrlMappings đang nhận được mục mới trong suốt thời gian chạy, nhưng mùa xuân không nhìn thấy nó khi URL được nhấn. –

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