Menu

登录

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 授权的配置方法,添加其他平台的登录方式也就轻而易举了。

Supabase Auth List

过滤邮箱别名

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), // 过滤邮箱别名
    // ... 省略 ...
  });
};