I crittografare la password dell'utente e salvarla in db. Quindi per il login utente, confrontare la password hash e la password semplice, sto ricevendo l'errore crypto/bcrypt: hashedPassword is not the hash of the given password
. Cosa c'è che non va ?crypto/bcrypt: hashedPassword non è l'hash della password specificata
risposta
Non riesco a stabilire quale sia, ma nella funzione di confronto, assicurarsi di avere le variabili nel posto giusto.
bcrypt.CompareHashAndPassword([]byte(user.Password), []byte(password))
Must be the already hashed PW^ ^Plain Text Password to compare
Assicurarsi inoltre si sta effettivamente ottenere qualcosa di hash, si potrebbero ottenere una password vuota, ma non rendersene conto, perché l'hash sarà ancora guardare piena.
'user.Password' deriva da db, quindi è già una password con hash. –
@MelihMucuk sei sicuro che stia colpendo la cosa giusta? Hai provato a registrare qual è il valore prima di ottenere l'hash? – Datsik
mia scommessa è che user.Password
è vuoto nella funzione Register
prima di passare a encryptPassword
determinando in tal modo gli hash sulla password vuote come quella che hai fornito ($2a$10$rqHJJTHsxMbtX/5ZjG1mFuWyYbUDW1PLbfwQRN0uChwes38c/0m3e
).
Sì, puoi verificarlo facilmente con 'fmt.Println (bcrypt.CompareHashAndPassword ([] byte (" $ 2a $ 10 $ rqHJJTHsxMbtX/5ZjG1mFuWyYbUDW1PLbfwQRN0uChwes38c/0m3e "), [] byte {}))' che stampa solo 'nil'. Dovresti aggiungere un controllo a 'encryptPassword' per assicurarti che ciò non accada. – djd
Puoi fornire un esempio del contenuto di 'user.Password' – Danilo
Hai confrontato i byte del DB per assicurarti che venga aggiornato correttamente e non modificato in alcun modo? – JimB
ad esempio, qui è la password hash da db '$ 2a $ 10 $ rqHJJTHTHxMbtX/5ZjG1mFuWyYbUDW1PLbfwQRN0uChwes38c/0m3e', generata da' 123456'. Quindi confronto la password con hash e la password semplice che è '123456' @Danilo @JimB –