I backend di autenticazione personalizzati Django devono prendere una password?
-
03-07-2019 - |
Domanda
Ecco come la mia università gestisce l'autenticazione: reindirizziamo l'utente a un sito Web, inseriscono il loro nome utente e password, quindi vengono reindirizzati a noi con il nome utente e una chiave di accesso passati nella stringa di query. Quando richiamiamo l'utente, chiamiamo una procedura memorizzata nel database dell'università che accetta nome utente, chiave di accesso e indirizzo IP e ci dice se questo è valido.
Ho un back-end di autenticazione personalizzato Django impostato per gestire la nostra fine di tutto questo. Fa differenza in un modo o nell'altro se riesco ad accettare un argomento con password (dal momento che non stiamo effettivamente prendendo la loro password)? In questo momento, l'ho impostato in modo che prenda la chiave di accesso come argomento della password. Sarebbe bello, cattivo o nessuno per me cambiare questo per prendere questo come dire, login_key anziché come password?
Soluzione
I documenti Django dicono questo:
In entrambi i casi, autenticare dovrebbe controllare le credenziali che ottiene e dovrebbe restituisce un oggetto Utente corrispondente quelle credenziali, se le credenziali sono validi Se non sono validi, è così dovrebbe restituire None.
Il 'In entrambi i casi' si riferisce al fatto che il metodo authenticate () accetta una combinazione nome utente / password o solo un token. Il tuo scenario rientra tra questi due, quindi penso che la risposta "migliore" sarebbe quella di scrivere il tuo autenticato () per prendere un nome utente e una chiave di accesso e restituire l'utente giusto o nessuno come appropriato.