Accesso senza password con magic link: checklist per UX e sicurezza
Checklist per accesso senza password con magic link: scadenza, uso singolo, regole di riutilizzo, gestione sessioni dispositivo e basi della deliverability email.

Che cos'è il magic link per l'accesso e cosa può andare storto
Un magic link è un link di accesso usa e getta inviato alla tua email. Invece di digitare una password, apri l'email, tocchi il link e vieni autenticato.
Questo approccio è utile quando le persone odiano le password, le dimenticano spesso o accedono solo occasionalmente. Può anche ridurre il riutilizzo di password tra siti, dato che non c'è una password da riutilizzare. Ma non elimina la necessità di sicurezza: sposta semplicemente la “chiave” principale nella casella di posta dell'utente.
Questo è lo scambio da tenere chiaro: l'accesso senza password con magic link è sicuro quanto l'account email dell'utente e la sua capacità di mantenerne privata l'accessibilità. Se qualcuno può leggere la tua email, spesso può anche accedere al tuo account.
Ecco i modi più comuni in cui i magic link falliscono nella pratica reale:
- L'accesso alla casella mail viene compromesso (password rubata via phishing, SIM swap per il recupero email, malware o un computer condiviso lasciato con la sessione attiva).
- Il link viene inoltrato (volontariamente o per errore) e lo usa la persona sbagliata.
- L'utente apre l'email su un dispositivo ma vuole la sessione su un altro e si confonde quando l'app si apre nel posto “sbagliato”.
- Un dispositivo condiviso resta connesso, così la persona successiva ha accesso.
- L'indirizzo email è sbagliato e il link di login arriva a qualcun altro.
Un piccolo esempio: qualcuno richiede un link su un laptop di lavoro, poi controlla l'email su un telefono personale. Tappa il link, il telefono lo autentica e il laptop mostra ancora la schermata di login. Se il flusso non spiega cosa è successo, arrivano i ticket di supporto.
Se costruisci questo in un prodotto creato con AppMaster, considera il passaggio email come un'azione sensibile, non solo una comodità. Messaggi chiari, link a breve durata e controlli semplici delle sessioni sono ciò che rende l'esperienza percepita come sicura.
L'accesso via email senza password è adatto al tuo prodotto?
L'accesso senza password con magic link funziona meglio quando l'obiettivo è un accesso rapido con la massima semplicità, non la protezione massima. È ideale per prodotti in cui le persone accedono occasionalmente e odiano resettare la password, e dove la casella email è già la “base” dell'utente.
Un modo semplice per decidere: se qualcuno accede all'account sbagliato, quale sarebbe il danno più realistico? Se la risposta è “fastidioso, ma risolvibile”, i magic link possono essere una buona impostazione predefinita.
I casi adatti spesso includono:
- App a rischio da basso a medio (strumenti interni, pannelli admin per piccoli team, portali clienti con permessi limitati)
- Prodotti con utenti poco frequenti che odiano i reset di password
- Esperienze “fammi entrare velocemente” come supporto, onboarding o approvazioni
- Prodotti in fase iniziale che vogliono ridurre i ticket di supporto
Sii cauto o evita i magic link come unico metodo di accesso quando:
- Gli account hanno alto valore (movimenti di denaro, grandi saldi, azioni irreversibili)
- Conservi dati regolamentati o sensibili (salute, legale, dettagli finanziari)
- Gli utenti condividono spesso la casella email (mailbox condivise, account di reception)
- Il tuo pubblico è probabilmente preso di mira (dirigenti, amministratori, ruoli ad alto privilegio)
Se il tuo prodotto ha momenti sensibili piuttosto che account sensibili, usa l'accesso via email come porta d'ingresso e poi richiedi un secondo fattore o un controllo step-up per azioni rischiose. Per esempio, richiedi una conferma aggiuntiva per cambiare i dettagli di pagamento, esportare dati o aggiungere un nuovo admin.
Decidi anche cosa può fare l'email. I magic link “solo per login” sono più sicuri e più facili da ragionare. “Login + recovery account” è comodo, ma significa che chi ha accesso all'email può prendere il controllo dell'account. Se supporti il cambio di email, trattalo come un'azione ad alto rischio.
Se stai costruendo un'app in una piattaforma no-code come AppMaster, questa decisione conta comunque: la UI può essere semplice, ma la tua policy sulle azioni sensibili e sul recupero deve essere esplicita fin dal primo giorno.
Il flusso base dei magic link (e le decisioni al suo interno)
I magic link sembrano semplici agli utenti, ma sotto ci sono molte scelte minori. Un flusso pulito mantiene le persone in movimento e riduce i ticket di supporto.
Il flusso che vede l'utente
La maggior parte dei prodotti segue lo stesso percorso: l'utente inserisce un'email, riceve un messaggio, tocca il link e atterra autenticato.
Un miglioramento comune è uno step di conferma finale dopo che il link si apre. Invece di autenticare istantaneamente, mostri una schermata breve come “Confirm sign-in to Acme” con un singolo pulsante. Questo aiuta quando qualcuno tappa il link sul dispositivo sbagliato o l'email viene aperta da un tool di anteprima.
Su mobile, decidi cosa significa “tappare il link”. Se hai un'app nativa, la migliore esperienza è solitamente: tocca il link -> apri l'app -> completa l'accesso. Se l'app non è installata, ricadi sul web mobile e offri un'opzione “Apri l'app” più avanti.
Decisioni da prendere
Prima di implementare l'accesso senza password con magic link, definisci queste regole così l'esperienza sia prevedibile:
- Dove si apre il link: browser in-app, browser di sistema o direttamente nell'app nativa (deep link).
- Se l'accesso è automatico o richiede una schermata di conferma finale.
- Cosa fare se l'utente è già autenticato quando tappa il link.
- Cosa succede se l'email viene cambiata a metà flusso o l'utente inserisce una email diversa al tentativo successivo.
- Cosa significa “successo”: tornare all'ultima pagina, a una schermata home predefinita o alla pagina che ha avviato il login.
L'essere già autenticati è facile da trascurare. Se un utente già loggato tappa un nuovo magic link, puoi (a) tenerlo nello stesso account e mostrare “Sei già autenticato”, oppure (b) trattarlo come cambio account e chiedere conferma. Per app costruite in AppMaster (come portali clienti o strumenti interni), l'opzione (a) è di solito più sicura a meno che lo switching account non sia una funzionalità reale.
Regole di scadenza: abbastanza brevi per essere sicure, abbastanza lunghe per funzionare
Un magic link è “passwordless” solo se sembra senza sforzo. La scadenza è la parte che può rompere silenziosamente questa promessa. Troppo corta e la gente trova link scaduti nella posta e si arrende. Troppo lunga e un'email inoltrata o esposta diventa un rischio maggiore.
Un punto di partenza pratico per accesso senza password con magic link è una finestra di scadenza tra 10 e 30 minuti. Finestra più corta (3-10 minuti) è adatta ad azioni ad alto rischio come l'accesso all'area admin o l'approvazione di un pagamento. Finestra più lunga (30-60 minuti) può andare bene per app a basso rischio, ma solo se hai controlli di sessione robusti e buona gestione dei dispositivi.
Rendi la scadenza chiara nell'email e nella schermata “Check your email”. Non nasconderla in testo piccolo. Usa una frase semplice come “Questo link scade tra 15 minuti.” Se puoi, mostra un conto alla rovescia nella schermata di attesa, ma non affidarti all'orologio del dispositivo dell'utente per l'accuratezza.
I ritardi nelle email e le differenze di orologio sono comuni. Alcuni provider trattengono i messaggi per qualche minuto, e alcuni utenti aprono l'email su un dispositivo diverso da quello che ha richiesto il link. Alcune regole aiutano a evitare confusione:
- Considera la scadenza basata sull'orario del server, non su quello dell'utente.
- Se un link è vicino alla scadenza, mostra un messaggio chiaro come “Link scaduto. Richiedi uno nuovo.”
- Se il link è ancora valido ma già usato, dì chiaramente così (e offri un passo successivo rapido).
Quando un link è scaduto, la migliore esperienza è un reinvio con un solo tocco dalla pagina di atterraggio. Mantieni la sicurezza: permetti il reinvio solo dopo un breve periodo di cooldown e evita di rivelare se una email esiste nel tuo sistema. La pagina può dire “Se questa email è registrata, invieremo un nuovo link.”
Un piccolo dettaglio che riduce i ticket: mostra l'indirizzo email esatto a cui è stato inviato il link (parzialmente mascherato) nella schermata di attesa, più un'opzione “Cambia email”. Se stai costruendo il flusso in uno strumento no-code come AppMaster, di solito sono solo un paio di stati UI, ma previene molta confusione tipo “Non ho ricevuto l'email”.
Uso singolo e regole di riutilizzo (le parti che gli utenti toccano davvero)
Per la maggior parte dei prodotti, scegli come predefinito magic link usa e getta. Protegge gli utenti da errori comuni come inoltri di email, caselle condivise o qualcuno che riapre un messaggio vecchio settimane dopo. Rende anche il supporto più semplice: se un link è stato usato, è finito.
La chiave è decidere cosa significa “usato” nella vita reale. Le persone cliccano due volte, aprono sul dispositivo sbagliato o toccano il link nella preview dell'email. Le tue regole devono essere sicure, ma devono anche sembrare giuste.
Cosa dovrebbe succedere quando lo stesso link si apre due volte?
Un buon punto di partenza: il primo login valido consuma il token e qualsiasi apertura successiva mostra un messaggio chiaro tipo “Questo link è già stato usato. Richiedi uno nuovo.” Evita errori vaghi. Se vuoi ridurre la frustrazione, puoi offrire una piccola finestra di sicurezza prima della consumazione, per esempio: contrassegnalo come usato solo dopo che la sessione è stata creata.
Ecco pattern user-friendly che rimangono sicuri:
- Se il link viene aperto di nuovo sullo stesso dispositivo e l'utente è già autenticato, portalo nell'app (e non mostrare nulla).
- Se il link viene aperto di nuovo ma non esiste una sessione attiva, mostra “Usato o scaduto” più un pulsante per inviare un nuovo link.
- Se il link viene aperto su un dispositivo diverso dopo che è stato usato, trattalo come non valido e richiedi un link fresco.
Se gli utenti richiedono più link, i più vecchi decadono?
Decidi questo in anticipo e sii coerente. Il default più sicuro è: ogni nuova richiesta invalida tutti i link in sospeso precedenti. Questo limita il danno se qualcuno ottiene accesso alla casella in un secondo momento.
Se mantieni più link validi contemporaneamente, avrai bisogno di protezioni più forti (scadenza breve, uso singolo rigoroso e controlli chiari su dispositivi/sessioni). Altrimenti l’accesso senza password con magic link può trasformarsi silenziosamente in chiavi di accesso a lunga durata nella posta.
Evita link riutilizzabili che funzionano all'infinito. Anche se è comodo, abitua gli utenti a considerare l'email come una chiave permanente e rende il contenimento di un takeover molto più difficile.
Se costruisci il flusso in uno strumento no-code come AppMaster, scrivi queste regole come stati in linguaggio semplice (valido, usato, scaduto, sostituito) così i messaggi UI combaciano con quello che il backend applica.
Dettagli UX che riducono confusione e ticket di supporto
La maggior parte dei ticket sui magic link non sono bug di sicurezza. Sono “Non ho ricevuto l'email”, “Ho cliccato e non è successo nulla” o “È phishing?”. Una buona UX previene tutti e tre.
Dopo che l'utente invia la sua email, mostra una schermata dedicata “Check your email” invece di un piccolo toast. Fallo calmo e specifico: indica a quale indirizzo hai inviato, cosa fare dopo e cosa provare se non arriva.
Una schermata di controllo email solida solitamente include:
- L'indirizzo email esatto usato, con una chiara opzione “Cambia email”
- Un pulsante di reinvio con un breve conto alla rovescia (così gli utenti non fanno spam di clic)
- Una nota sui tempi di consegna tipici (per esempio, “Di solito arriva entro 1 minuto”)
- Un promemoria gentile di controllare spam, schede Promozioni e filtri aziendali
- Una breve riga sulla sicurezza: “Non inoltrare questo link”
La fiducia si guadagna nell'email stessa. Usa un nome mittente e un oggetto coerenti e mantieni il contenuto prevedibile. Aggiungi uno o due dettagli che aiutano l'utente a sentirsi sicuro che sia legittima, come “Richiesto da Chrome su Windows” o “Richiesto alle 15:42”. Evita testi allarmanti. Semplice è meglio: “Questo link ti autentica. Se non l'hai richiesto, puoi ignorare questa email.”
Pianifica anche il fallimento più comune: email ritardate o filtrate. La tua UI non dovrebbe essere un vicolo cieco. Se il link potrebbe impiegare tempo, spiega cosa fare mentre si aspetta e offri un fallback gentile.
Un fallback pratico è includere un breve codice usa e getta nella stessa email del link. La schermata di controllo può quindi offrire “Inserisci un codice invece” per i casi in cui il link si apre sul dispositivo sbagliato o è bloccato da un scanner di sicurezza email.
Un piccolo ma importante dettaglio: se un utente clicca un link vecchio o già usato, mostra un messaggio utile e un unico passo chiaro come “Inviami un nuovo link”, non un errore generico.
Nozioni di sicurezza di base dietro le quinte (senza parlare di crittografia pesante)
Un magic link è sicuro quanto il token che lo protegge. Tratta quel token come una chiave temporanea per l'account: deve essere difficile da indovinare, a breve durata e utilizzabile solo nel modo previsto.
Inizia con l'imprevedibilità. Genera token lunghi e casuali (non basati su email, tempo o ID incrementali). Conserva il meno possibile. Un pattern comune è memorizzare una versione hash del token (così se il DB viene compromesso, il link grezzo non può essere riutilizzato) più il minimo metadata necessario per validarlo.
Legare il token al contesto può prevenire l'inoltro facile. Non sempre vuoi un binding rigido (le persone cambiano dispositivo), ma puoi aggiungere controlli leggeri per rilevare abusi evidenti. Esempi: vincolare il token all'indirizzo email per cui è stato richiesto e opzionalmente a una fingerprint grossolana come la famiglia dell'user agent o la prima range IP vista. Se il contesto non combacia, puoi chiedere un link nuovo invece di bloccare seccamente.
Il rate limiting conta più dei conti matematici sofisticati. Senza, gli attaccanti possono spamare il tuo form di login, infastidire gli utenti e sondare l'esistenza delle email.
- Limita le richieste per email e per IP (inclusi i reinvii)
- Aggiungi un breve cooldown tra le email (per esempio, 30-60 secondi)
- Mostra lo stesso messaggio sia che l'email esista sia che non esista
- Allerta su picchi (molte email verso molti indirizzi)
Infine, registra ciò che ti servirà quando un utente dice “Non ho fatto io”. Cattura eventi come link richiesto, email inviata, link aperto, token accettato/fallito (e perché) e sessione creata. Includi timestamp, IP e user agent. In uno strumento costruito con AppMaster, questi eventi possono essere registrati come parte del processo business di login così supporto e sicurezza hanno una traccia chiara senza scavare negli interni del server.
Gestione dispositivi e sessioni che gli utenti capiscono
I magic link eliminano le password, ma gli utenti pensano ancora in termini di dispositivi: “Ho fatto login sul mio telefono” o “Ho usato un laptop condiviso.” Se non gli dai un modo semplice per vedere e terminare le sessioni, i ticket di supporto aumentano rapidamente.
Inizia con una decisione: quante sessioni attive può avere un account contemporaneamente. Per la maggior parte dei prodotti consumer, più sessioni vanno bene (telefono + laptop). Per strumenti sensibili (admin, finanza, operazioni interne), potresti limitarle o richiedere un magic link fresco quando appare un dispositivo nuovo.
Una piccola pagina “Dispositivi” o “Sessioni attive” rende tutto più semplice da capire. Mantienila chiara e leggermente imperfetta invece di troppo precisa. Una riga utile include:
- Nome dispositivo (o browser e OS se non puoi rilevare il modello)
- Posizione approssimativa (città o regione, non un indirizzo completo)
- Ultima attività
- Primo rilevamento
- Un'etichetta breve come “Questo dispositivo” per la sessione corrente
Da lì, offri due azioni chiare. “Disconnetti” dovrebbe terminare solo quella sessione. “Disconnetti da tutti i dispositivi” dovrebbe terminare tutto, incluso il dispositivo corrente, e forzare nuovi magic link ovunque.
Tra queste azioni, definisci cosa succede quando un dispositivo viene perso o è condiviso. Il default più sicuro è: disconnettere invalida tutte le sessioni esistenti e qualsiasi magic link non usato già inviato. Gli utenti non hanno bisogno dei dettagli; vogliono solo la garanzia che l'accesso vecchio sia sparito.
Ecco un comportamento semplice che raramente sorprende gli utenti:
- Un nuovo login tramite magic link crea una nuova sessione
- Ogni sessione ha un timeout di inattività (per esempio, giorni) e una durata massima assoluta (per esempio, settimane)
- Cambiare email innesca “disconnetti da tutti i dispositivi”
- “Disconnetti da tutti i dispositivi” annulla anche i link di accesso in sospeso
Se costruisci questo in AppMaster, puoi modellare le sessioni nel Data Designer, mostrarle in una UI web/mobile di base e aggiungere azioni con un clic in un Business Process. Gli utenti ottengono una vista familiare delle “sessioni attive” senza dover trasformare il prodotto in un manuale di sicurezza.
Minacce e casi limite: inoltri, email condivise e errori di battitura
I magic link sembrano semplici, ma la posta è complicata. Le persone inoltrano messaggi, condividono inbox e sbagliano a digitare gli indirizzi. Se progetti solo per il caso ideale, finirai con blocchi confusi e richieste di supporto difficili da gestire.
L'inoltro è la sorpresa più grande. Un accesso senza password con magic link dovrebbe presumere che il link possa essere aperto da qualcun altro, su un altro dispositivo, minuti o ore dopo. Il baseline più sicuro è uso singolo più un messaggio chiaro “questo link è già stato usato”, con un pulsante per richiederne uno nuovo. Se vuoi una protezione extra, mostra uno step di conferma leggero dopo il click quando il dispositivo è nuovo (per esempio, “Sei stato tu?” più una rapida opzione annulla che revoca la sessione).
Le inbox condivise richiedono una decisione di prodotto, non una patch tecnica. Se più persone leggono la stessa email (come support@ o sales@), i magic link diventano per default accesso condiviso. Considera di richiedere un passo aggiuntivo per account “team” (per esempio, invitare a un'email personale) o rendi chiaro nella UI che l'accesso alla posta equivale all'accesso all'account.
Gli errori di battitura creano “account fantasma” e problemi di privacy imbarazzanti. Evita di creare silenziosamente nuovi account al primo login a meno che il tuo prodotto lo richieda davvero. Un approccio più sicuro è confermare l'intento nell'app prima dell'onboarding e mantenere la risposta email neutrale (stesso messaggio sia che l'account esista sia che non esista).
Alias contano anche. Decidi come tratti plus-addressing (nome+tag@) e alias del provider:
- Tratta le email come stringhe esatte (più semplice, meno sorprese)
- Oppure normalizza pattern comuni (meno account duplicati, ma rischio di unire utenti che non se lo aspettano)
Il supporto è dove le cose possono andare male in fretta. Non chiedere agli utenti di inoltrare email, incollare token o condividere screenshot di link. Offri invece azioni semplici in-app come “invia un nuovo link”, “disconnetti altri dispositivi” e “segnala che non sono stato io”, così il supporto può aiutare senza toccare dati sensibili.
Checklist rapida prima del lancio
Prima di lanciare l'accesso senza password con magic link, decidi cosa vuoi che succeda nel mondo reale disordinato: consegne email lente, persone che toccano il link due volte e utenti che passano da telefono a laptop.
Inizia con le regole che controllano rischio e carico di supporto. Se sbagli queste, la UI non ti salverà.
- Imposta una finestra di scadenza chiara (spesso 10-20 minuti) e mostrala nell'email e nella schermata “Check your email”.
- Rendi i link usa e getta per default e definisci cosa significa “usato” (dopo il click, dopo la creazione della sessione o dopo la prima apertura).
- Aggiungi limiti di reinvio e pacing (per esempio, un breve cooldown), più un messaggio amichevole che spieghi perché non si può spamare “invia di nuovo”.
- Limita le sessioni attive per utente dove ha senso e decidi cosa fare quando il limite è raggiunto (mantieni il più nuovo, il più vecchio o chiedi).
- Gestisci i tap multipli e i link vecchi in modo prevedibile: se un link è scaduto o già usato, mostra una pagina semplice con una azione primaria (“Invia un nuovo link”).
Poi controlla le parti che gli utenti vedono davvero. La maggior parte dei reclami viene da email poco chiare e comportamento mobile confuso.
- Contenuto dell'email: nome mittente riconoscibile, oggetto chiaro, linguaggio semplice e una breve linea “Non hai richiesto questo?” che spiega cosa fare.
- Comportamento mobile: conferma cosa succede se l'utente apre l'email su un dispositivo ma vuole accedere su un altro e se supporti deep link nell'app.
- Click multipli: se un utente tocca due volte, evita errori spaventosi; dì che è già autenticato o che il link non è più valido.
- Gestione dispositivi: fornisci una lista semplice di dispositivi, un'opzione “disconnetti questo dispositivo” e note di audit basilari (tempo, dispositivo, posizione se disponibile).
- Recupero: prevedi un piano per “Non posso accedere alla mia email” (flusso di supporto, verifica alternativa o un processo sicuro per cambiare l'account).
Se stai costruendo questo in uno strumento come AppMaster, mappa ogni voce della checklist a una schermata concreta e a una regola business nella tua logica, così il comportamento resta coerente tra web e mobile.
Un esempio realistico: nuovo login da dispositivo, link scaduto e pulizia
Maya lavora nel supporto. Lunedì mattina apre il portale clienti su un nuovo laptop. Inserisce la sua email di lavoro e tocca “Send me a sign-in link”. L'email arriva con un magic link che scade in 10 minuti.
Clicca, il browser si apre e lei entra nel portale. Dietro le quinte, il link viene accettato una sola volta e poi marcato come usato. Il portale crea una nuova sessione “Maya - Laptop Chrome” e la mantiene connessa per 14 giorni a meno che non faccia logout.
Più tardi quel giorno, Maya prova ad accedere dal telefono. Riusa l'email della mattina e tocca lo stesso link. L'app mostra un messaggio chiaro: “That link was already used. Request a new one.” Richiede un altro link, ma si distrae. Quindici minuti dopo lo tappa e vede: “This link expired. Send a fresh one.” Richiede di nuovo, tocca subito e la sessione sul telefono viene creata come “Maya - iPhone Safari”.
Venerdì, Maya aiuta un collega su un laptop condiviso. Si autentica, finisce il compito e poi va in “Devices” e tocca “Sign out of this device”. Prima di andare via, rimuove anche la sessione del laptop condiviso dal suo account così non può essere usata di nuovo.
Ecco le regole semplici che l'app ha seguito:
- I link scadono rapidamente (minuti), ma le sessioni possono durare più a lungo (giorni)
- Ogni link funziona una sola volta; link usati o scaduti non possono essere riutilizzati
- Ogni accesso crea una sessione dispositivo nominata che l'utente può rivedere
- Gli utenti possono disconnettere un dispositivo o revocare tutte le sessioni se necessario
Per costruire questo flusso in AppMaster, inizia con il modulo di autenticazione e abilita l'accesso via email. Conserva le sessioni nel database (utente, nome dispositivo, momento di creazione, ultima attività). Usa il modulo di messaging per inviare l'email di login e un breve Business Process per validare lo stato del token (non usato, non scaduto), poi crea o revoca sessioni. Se vuoi l'accesso senza password con magic link senza molto codice personalizzato, puoi creare schermate e logica negli editor visuali e provarlo subito.


