Estou usando o vRaptor 4.2.2
Tenho um método de validação de usuário e senha:
@Post
public void valida(@NotNull @Valid Login login) {
// lógica de validação aqui
}O login.jsp é assim:
<form action="<c:url value='/login/valida'/>" method="post">
<div class="centraliza">
<div class="form-group col-sm-4 centraliza">
<label for="login.usuario">Usuário</label>
<input type="text" class="form-control" name="login.usuario" id="login.usuario"
value="${login.usuario}" />
</div>
<br/>
<div class="form-group col-sm-4 centraliza">
<label for="login.senha">Senha</label>
<input type="password" class="form-control" name="login.senha" id="login.senha"
value="${login.senha}" />
</div>
<br/>
<div class="centraliza-texto">
<input type="submit" value="Entrar" class="btn btn-info btn-lg" />
</div>
</div>
</form>Antes de chegar na primeira linha da lógida de validação do método 'valida', passo pelo trecho de código da classe IogiParametersProvider.java:
private List<Object> instantiateParameters(Parameters parameters, List<Target<Object>> targets, List<Message> errors) {
LOGGER.debug("getParametersFor() called with parameters {} and targets {}.", parameters, targets);
List<Object> arguments = new ArrayList<>(targets.size());
for (Target<Object> target : targets) {
Object newObject = instantiateOrAddError(parameters, errors, target);
arguments.add(newObject);
}
return arguments;
}Essa linha "LOGGER.debug("getParametersFor() called with parameters {} and targets {}.", parameters, targets);" loga meu usuário e senha em claro nos logs. De cara, pensei em aumentar o nível do log4j de DEBUG para INFO, e parou de logar. Porém é uma solução sensível de erro de alguém que troque esse nível.
Vi que, em ParametersInstantiator.java, tem o trecho abaixo:
private Object[] getParametersForCurrentMethod() {
Object[] args = flash.consumeParameters(methodInfo.getControllerMethod());
if (args == null) {
return provider.getParametersFor(methodInfo.getControllerMethod(), errors);
}
return args;
}Ele entra na condicão "if (args == null)". Não sei por quê args ainda é null nesse ponto (talvez seja o esperado mesmo). É exatamente o que faz cair na linha supracitada: "LOGGER.debug("getParametersFor() called with parameters {} and targets {}.", parameters, targets);"
Alguém poderia me ajudar a não deixar essa senha em claro no log mantendo no nível de log DEBUG?
Obrigado.