登录
Nexty.dev 的登录功能基于 Supabase Auth 实现。选择 Supabase Auth 是因为这是让开发者心智负担最小的选择之一:
- 配置简单,即使你没有技术背景,根据Supabase 集成文档操作也不会出错
- Supabase Auth 内置了 token 和 cookie 管理机制,这关系到平台稳定性和安全性,现在你完全不需要为此花时间
- 与 Supabase 数据库完美配合,能够轻松处理数据库访问权限控制
支持的登录方式
对于面向全球运营的产品,Google 授权登录和邮箱登录是无法绕开的,如果你的产品还希望引起开发者的注意,那么 Github 授权登录也是很重要的选择。因此 Nexty.dev 默认支持这三种登录方式:Google 授权、GitHub 授权以及邮箱 Magic Link。
Supabase Auth 支持众多主流第三方登录,包括 Apple、Azure(Microsoft)、Discord、Facebook、Notion 等。一旦你掌握了 GitHub 和 Google 授权的配置方法,添加其他平台的登录方式也就轻而易举了。

过滤邮箱别名
Nexty.dev 源码中的 lib/email.ts
文件包含两个重要方法:邮箱验证(validateEmail
)和邮箱别名过滤(normalizeEmail
)。这两个方法可以一定程度上防范异常邮箱和邮箱别名带来的风险。
很多用户可能不知道,Gmail、Outlook 等邮箱服务都支持添加前后缀作为别名。对提供免费试用的 SaaS 产品来说,这可能导致用户通过邮箱别名无限注册来获取试用权益。
在 components/providers/AuthProvider.tsx
中,我们通过 normalizeEmail
方法过滤掉这些邮箱别名:
const signInWithEmail = async (email: string) => {
return await supabase.auth.signInWithOtp({
email: normalizeEmail(email), // 过滤邮箱别名
// ... 省略 ...
});
};