这篇文章是NextAuth + 数据库存储(adapter) + 邮箱认证的部分内容。由于内容比较多,我把它分成了多篇文章来介绍。
这里主要讲的是NextAuth如何配置邮箱认证,如何使用Mailgun作为第三方SMTP进行邮箱认证,Mailgun注册和配置流程
NextAuth与传统用户登录注册的区别
- 使用NextAuth无需存储密码,注册和登录是一体化的,但你也可以显式区分注册和登录的逻辑。
- 通过认证提供者(google, github, email等)进行用户认证
- 自带用户管理和会话管理,不需要创建额外的 API 路由来手动处理登录或注册
主要涉及以下过程
- 登录和注册:使用电子邮件注册实际上就是,发送一个登录链接,用户通过点击这个链接来验证他们的邮箱并完成登录过程。
- 会话管理:NextAuth 管理用户的会话和验证状态,包括刷新令牌和处理会话过期。
NextAuth中的邮箱认证
邮箱认证无需用户使用密码进行注册和登录,用户通过输入邮箱地址,在邮箱中接收到一个唯一的、有时效性的登录链接来点击进行登录,这个链接会直接让用户登录到你的应用中。这通常使用第三方SMTP进行。
SMTP服务器
SMTP服务器-Simple Mail Transfer Protocol是用于发送电子邮件的服务器,当你的应用或服务需要发送电子邮件(如账户验证邮件、重置密码邮件等)时,SMTP服务器承担着将这些邮件从你的应用传输到用户邮箱的任务。
SMTP服务器的工作流程
- 应用发送电子邮件到SMTP服务器:应用生成一封电子邮件,并通过网络发送给SMTP服务器。
- SMTP服务器转发邮件到收件人邮箱:SMTP服务器接收到邮件后,负责查找接收邮箱的服务器地址,并将邮件转发到正确的目的地。
- 收件人查收邮箱:目的地的邮件服务器接收到邮件,并将其存储在收件人的邮箱中,等待收件人检查。
我们可以搭建自己的SMTP服务器,也可以使用第三方SMTP帮助我们进行电子邮件的发送,使用第三方SMTP显然是更加方便的方式,它也会提供更多邮件发送相关的数据分析和管理。
常用的第三方SMTP
常见的第三方SMTP有SendGrid,Amazon SES, Google Workspace,还有这里使用到的mailgun。