Je voulais contrôler l'accès avec les annotations de la méthode Spring Security.
Annoté une classe existante.
MyService.java
@Component
public class MyService {
@PreAuthorize("hasRole('ROLE_ADMIN')")
public void someAdminAction() {
/* ... */
}
}
J'ai créé une classe de configuration pour activer les annotations.
MethodSecurityConfiguration.java
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class MethodSecurityConfiguration {
}
«MyService» injectait dans le contrôleur.
MyController.java
@RestController
public class MyController {
@Autowired
private MyService myService;
/* ... */
}
Je ne peux pas injecter MyService dans MyController!
Quelque chose appelé Type Mismatch! !!
La classe annotée AOPs et devient un proxy, il semble donc que le type a changé (?).
Ajout de l'option proxyTargetClass = true
.
MethodSecurityConfiguration.java
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true, proxyTargetClass = true)
public class MethodSecurityConfiguration {
}
Recommended Posts