Ich habe einen benutzerdefinierten Authentifizierungsfilter in meinem Spring 4 MVC + Security + Boot-Projekt festgelegt. Der Filter macht seinen Job gut und jetzt möchte ich die Sicherheit für einige URI (wie /api/**
) deaktivieren. Hier ist meine KonfigurationSpring webSecurity.ignoring() ignoriert benutzerdefinierten Filter nicht
Leider, wenn ich Ressource unter/api/... aufrufen, ist der Filter immer noch verkettet. Ich habe println in meinem Filter hinzugefügt und es wird bei jedem Anruf in die Konsole geschrieben. Weißt du, was mit meiner Konfiguration nicht stimmt?
UPDATE
Filter Code:
@Component
public class EAccessAuthenticationFilter extends RequestHeaderAuthenticationFilter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("FILTER");
if(SecurityContextHolder.getContext().getAuthentication() == null){
//Do my authentication stuff
PreAuthenticatedAuthenticationToken authentication = new PreAuthenticatedAuthenticationToken(user, credential, authorities);
SecurityContextHolder.getContext().setAuthentication(authentication);
}
super.doFilter(request, response, chain);
}
@Override
@Autowired
public void setAuthenticationManager(AuthenticationManager authenticationManager) {
super.setAuthenticationManager(authenticationManager);
}
}
Es security.ignored ist =/api/** (ohne „Frühling ") und diese Lösung funktioniert auch nicht. Aber gut zu bemerken! – rattek
Hmmm, sowohl Ihr Originalcode als auch dieser sollte aus meiner Erfahrung stammen. Können Sie Ihren relevanten Filtercode posten? – Adam
Ich habe gerade den Beitrag mit dem Filter aktualisiert – rattek