Ich wollte den Zugriff mit Anmerkungen zur Spring Security-Methode steuern.
Kommentierte eine vorhandene Klasse.
MyService.java
@Component
public class MyService {
@PreAuthorize("hasRole('ROLE_ADMIN')")
public void someAdminAction() {
/* ... */
}
}
Ich habe eine Konfigurationsklasse erstellt, um Anmerkungen zu aktivieren.
MethodSecurityConfiguration.java
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class MethodSecurityConfiguration {
}
MyService
wurde in den Controller injiziert.
MyController.java
@RestController
public class MyController {
@Autowired
private MyService myService;
/* ... */
}
Ich kann MyService nicht in MyController injizieren!
So etwas wie Type Mismatch! !!
Die mit Anmerkungen versehene Klasse AOPs wird zu einem Proxy, sodass sich der Typ anscheinend geändert hat (?).
Die Option "proxyTargetClass = true" wurde hinzugefügt.
MethodSecurityConfiguration.java
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true, proxyTargetClass = true)
public class MethodSecurityConfiguration {
}
Recommended Posts