第四部分: GoTrue

关于

如何将表的访问限制在认证用户、行级策略和基于电子邮件域的访问。

观察

Gotrue Server#

Gotrue是一个由Netlify团队用Go编写的认证API服务器,在这里可以找到Supabase的分叉:https://github.com/supabase/gotrue 可用的API端点列表可在这里

当你部署一个新的Supabase项目时,我们会在你的数据库旁边部署一个新的服务器实例,同时也为你的数据库注入所需的auth模式。

这使得它非常容易,例如,发送神奇的链接电子邮件,你的用户可以用它来登录:

# replace <project-ref> with your own project reference
# and SUPABASE_KEY with your anon api key
curl -X POST 'https://<project-ref>.supabase.co/auth/v1/magiclink' \
-H "apikey: SUPABASE_KEY" \
-H "Content-Type: application/json" \
-d '{
  "email": "someone@email.com"
}'

Gotrue负责为你的用户发放访问令牌,发送确认邮件、魔法链接和密码恢复邮件(默认情况下,我们从Supabase的SMTP服务器发送这些邮件,但你可以在仪表板的Auth > Settings中轻松插入你自己的邮件),也可以与第三方OAuth提供商进行交易,获得基本的用户数据。

如果你的用户需要与供应商进行更密切的互动,社区最近甚至还内置了请求自定义OAuth范围的功能。请看这里的scopes参数。https://github.com/supabase/gotrue#get-authorize

因此,假设你想通过gmail代表用户发送电子邮件,你可能会请求gmail.send范围,把他们引导到:

https://sjvwsaokcugktsdaxxze.supabase.co/auth/v1/authorize?provider=google&https://www.googleapis.com/auth/gmail.send

当然,你必须确保你的谷歌应用经过验证,以便申请这些高级范围。

Gotrue-js (还有 gotrue-csharp, gotrue-py, gotrue-kt, 和 gotrue-dart) 都是对Getrue API端点的封装,使你的客户端更容易进行会话管理。

但是gotrue-js的所有功能在supabase-js中也是可用的,当你做一些事情时,supabase-js在内部使用gotrue-js。

1const { user, session, error } = await supabase.auth.signIn({
2  email: 'example@email.com',
3  password: 'example-password',
4})

如果你想申请一个功能,或直接为项目做贡献,只需前往 https://github.com/supabase/gotrue 并打开一些问题/PR,我们总是愿意帮助。

在下一个指南中,我们将研究如何设置外部OAuth提供者。观看第五部分:Google Oauth

资源

下一步