Đối với một dự án, tôi cố gắng sử dụng Bảo mật mùa xuân 3.2 làm bảo mật cơ bản. Vì dự án này đã được thiết lập và đang chạy, tôi đã có một lớp bảo mật (riêng) khác. Do đó tôi đã tạo một trình xác thực tùy chỉnh để làm tan các lớp bảo mật. Hoạt động tốt, cho đến khi tôi cũng cần thiết để thực hiện một xác thực vô danh tùy chỉnh (Spring Security Documentation, chapter 13).Xác thực tùy chỉnhFilter Bảo mật mùa xuân 3.2
Vì vậy, tôi đã thực hiện một bộ lọc tùy chỉnh và loại bỏ các bộ lọc orignal:
<http request-matcher="regex" use-expressions="true">
<anonymous enabled="false" />
<custom-filter ref="anonymousAuthFilter" position="ANONYMOUS_FILTER"/>
...
</http>
đậu:
<beans:bean id="anonymousAuthFilter" class="own.package.auth.SecurityAnonymousAuthenticationFilter">
<beans:property name="key" value="anonymousKey "/>
<beans:property name="userAttribute" value="anonymous,ROLE_ANONYMOUS"/>
</beans:bean>
và te Java Class:
public class SecurityAnonymousAuthenticationFilter extends GenericFilterBean implements InitializingBean {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
logger.info("Entering doFilter method");
//implementation code here
}
//other methods
}
Vấn đề là các phương thức doFilter không được gọi khi yêu cầu máy chủ. Tuy nhiên phương thức init afterPropertiesSet() đang được gọi ... Có ai hiểu tại sao customFilter của tôi không bị sa thải không?
P.S. Tôi đã đặt tên delegatingFilterProxy trong tệp web.xml, vì vậy đó không phải là vấn đề.
Cố gắng chèn bộ lọc tùy chỉnh của bạn vào một số vị trí khác (ví dụ ** sau = "ANONYMOUS_FILTER" **). Có thể ** vô hiệu hóa được bật = "sai" ** hoạt động theo vị trí bộ lọc? –
@MaksymDemidas: Thx cho nhận xét, tiếc là nó không thay đổi bất cứ điều gì. –
Bạn đã thử xóa ** anonymous enabled = "false" ** chưa? –