Ogni oggetto utente nel mio database ha un ID incrementale (1, 2, 3, ...). L'URL per visualizzare il profilo di un utente contiene l'ID dell'oggetto utente; per esempio. http://www.example.com/users/1. In questo modo tutti possono vedere quanti utenti ci sono sul sito web, quanto velocemente cresce la base di utenti ecc. Non voglio dare queste informazioni.Come calcolare un ID nascosto breve di lunghezza fissa simile a YouTube (ad esempio 2WNrx2jq184)
Mi piacerebbe convertire l'ID incrementale in una stringa di lunghezza fissa in formato Base58, quindi l'URL sarebbe simile a http://www.example.com/users/2WNrx2jq184 Inoltre, ho bisogno della funzione di inversione che converta la stringa all'ID originale. La funzione inversa non dovrebbe essere facile da decodificare.
Il miglior codice Python che ho trovato per questo scopo è https://github.com/JordanReiter/django-id-obfuscator. È molto buono, ma in alcuni casi aggiunge un carattere 0
e/o .
, che porta a stringhe che non sono in Base58 e non hanno una lunghezza fissa. (Vedi utils.py linee 24 e 29.)
Come posso migliorare django-id-obfuscator di provocare base58 lunghezza fissa gli ID offuscato, o come posso creare tali ID offuscato in Python?
presumo si vuole evitare di creare un numero casuale e memorizzare il suo riferimento all'ID reale da qualche parte in il database? – Groo
https://github.com/JordanReiter/django-id-obfuscator/blob/master/id_obfuscator/base58.py - questo non sembra contenere '0' o' .'. – eumiro
@eumiro https://github.com/JordanReiter/django-id-obfuscator/blob/master/id_obfuscator/utils.py - succede qui – Korneel