Bem... Implementa os dois kkkk. Brincadeiras a parte, empresas como a Microsoft usam seus métodos de 2fa como métodos de login, sem precisar da senha (apesar de ainda existir essa opção). O Github, por exemplo, usa o seu aplicativo como 2fa. Então, é bom ter opção de entrar com senha, mas não necessariamente é ruim ter a opção de entrar com magic links ou, como o Notion faz, um tipo de magic link, só que tem, também, a opção de colocar o código enviado por e-mail.
Justo! Acho que implementar as suas seja uma solução boa, mas isso ainda faz manter uma informação valiosa no banco de dados que é a senha... e caso a pessoa tenha utilizado a mesma senha em outro serviço na qual teve seus dados expostos, ela está 50% exposta aqui (faltando só o email).
Em paralelos, já vi serviços implementarem magic link de uma forma muito insegura, que é receber um email e ao clicar no link dele, o dispositivo na qual fez a requisição é autenticado. Por exemplo:
- Atacante (pelo celular, ou qualquer outro client) faz requisição com o usuário/email da vítma.
- Vítma recebe email e clica sem querer no link (ou o Outlook clica por você, como vimos no passado)
- Celular do atacante é autenticado.