Spring Security @PreAuthorize устанавливает бин валидатора в ноль при добавлении его в WebDataBinder - PullRequest
0 голосов
/ 12 июня 2018

Я использую @EnableGlobalMethodSecurity, но как только я аннотировал любой метод контроллера с помощью @PreAuthorize, бин валидатора бина становится нулевым при добавлении валидатора в связыватель данных.и вот мой код:

@EnableGlobalMethodSecurity(prePostEnabled=true) //to enable method level security


@RestController
@RequestMapping("/capacityDelegations")
public class CapacityDelegationController implements Serializable{


/**
 * 
 */
private static final long serialVersionUID = 6878225451248023554L;


private CapacityDelegationHandler capacityDelegationHandler;
private CapacityDelegationChangeStatusRequestValidator capacityDelegationChangeStatusRequestValidator;


public CapacityDelegationController(CapacityDelegationHandler capacityDelegationHandler, CapacityDelegationChangeStatusRequestValidator capacityDelegationChangeStatusRequestValidator) {
    // checked here in debug mode to make sure that validator's bean injected properly
    this.capacityDelegationChangeStatusRequestValidator = capacityDelegationChangeStatusRequestValidator; 
    this.capacityDelegationHandler = capacityDelegationHandler;

}

@InitBinder("capacityDelegationChangeStatusRequest")
private void initCapacityDelegationChangeStatusRequestBinder(WebDataBinder binder) {
    //in debug mode when a PUT request received the value of capacityDelegationChangeStatusRequestValidator turns to null if @PreAuthorize applied and not null if removed
binder.addValidators(this.capacityDelegationChangeStatusRequestValidator); 
}



@PutMapping(path = "/serial={serial}/submission")
@PreAuthorize("hasRole('ROLE_OFFICER')")
public ResponseEntity<?> submit(@Valid @RequestBody CapacityDelegationChangeStatusRequest capacityDelegationChangeStatusRequest) throws JudicialWarrantException {
    return capacityDelegationHandler.submit(null, capacityDelegationChangeStatusRequest);
}



}

Я использую Spring boot 5.0.5

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...