Devo fornire ai clienti del negozio uno strumento per verificare lo stato dei loro ordini di riparazione.
I client non hanno un utente o una password. Sono solo un record nel database. Eppure ho bisogno di dare loro un modo per accedere alla pagina web e controllare il loro stato (pronto o meno). Costringere quindi a registrarsi non è un'opzione.
Sono arrivato con questa idea:
- All'utente viene richiesto il suo indirizzo email
- Il sistema controlla se questa e-mail è registrata nel database, genera un hash e invia un e-mail speciale con l'hash.
- Il controllo utente è l'email e va a questo indirizzo
- Quando il sistema riceve una richiesta all'indirizzo speciale verifica se l'hash è nel database e recupera l'id_utente
- Se è presente, voilà! Ciao John Doe Il tuo ordine # 3454364 è pronto per essere prelevato
L'algoritmo di generazione hash sarebbe.
SELECT clients set hash = SUBSTRING(PASSWORD(UUID()), 2);
L'hash / password è salata e Bcrypt (ed) nel server.
Potrei aggiungere un timeout (hash valido per 1 giorno o qualcosa del genere)
C'è qualcosa di terribilmente sbagliato in questa idea?
UPDATE: Corretto il testo in modo che sia meno confuso.
Quale fattore di lavoro dovrei usare per Bcrypt? Sembra essere come l'idea generale è di aumentare il numero fino a quando ci vuole ~ 1 secondo.
Mi piace l'output di PASSWORD di MySQL per la generazione di hash perché è molto intuitivo. Ma questa è davvero l'unica ragione. Qualche altro suggerimento?