DDD: come e dove cambiare la password per l'entità utente?

1

Sto pensando a come cambiare la password per l'entità utente nella mia applicazione OOD Spring.

Quello che mi sembra il modo più semplice:

  1. Chiedi repository per l'entità dell'account utente particolare
  2. Codifica password semplice con codificatore di password esterno dell'entità
  3. Imposta la password codificata sull'entità
  4. Chiedi al repository di salvare l'entità utente

È questo approccio corretto per separare la codifica della password dal servizio esterno o dovrebbe essere elaborata nell'oggetto dominio?

    
posta Artegon 15.07.2018 - 12:07
fonte

1 risposta

1

Non è terribilmente importante dove è esattamente l'hash della password, purché tutto l'hashing sia tenuto insieme in un unico posto. Per esempio. un'entità come questa sarebbe perfettamente valida:

class PasswordAuthentication {
  private User user;
  private String hashedPassword;  // includes salt

  /** Check whether the provided password is correct.
   */
  public boolean checkPassword(String plaintextPassword) {
    return secureCompare(hashedPassword, passwordHash(plaintextPassword, hashedPassword));
  }

  /** Set a new password.
   */
  public void resetPassword(String plaintextPassword) {
    hashedPassword = passwordHash(plaintextPassword, createNewSalt());
  }
}

Il tuo punto su un "servizio esterno" è corretto, in quanto l'autenticazione dell'utente è spesso un contesto separato separato dal tuo modello di dominio principale. È corretto che ad es. un'entità che rappresenta un profilo utente non dovrebbe fare anche crypto.

    
risposta data 15.07.2018 - 13:40
fonte

Leggi altre domande sui tag