重定向 URL

概览

使用无密码登录第三方提供程序时,MemFire Cloud 客户端库方法提供 redirectTo 参数,以指定身份验证后将用户重定向到的位置。默认情况下,用户将被重定向到SITE_URL,但您可以修改SITE_URL或将其他重定向 URL 添加到允许列表。将必要的 URL 添加到允许列表后,可以在 redirectTo 参数中指定希望用户重定向到的 URL。

在重定向 URL 中使用通配符#

MemFire Cloud 允许您在将重定向 URL 添加到允许列表时指定通配符。您可以使用通配符匹配模式来支持来自 Netlify 和 Vercel 等提供商的预览 URL。

WildcardDescription
*匹配任何非分隔符字符序列
**匹配任意字符序列
?匹配任何单个非分隔符
c匹配字符 c (c != *, **, ?, \, [, {, })
\c匹配字符 C
[!{ character-range }]匹配不在 { 字符范围 } 中的任何字符序列。例如,[!a-z] 将不匹配 a-z 范围内的任何字符。

URL 中的分隔符定义为 。和 /。使用此工具来测试您的模式。

推荐

虽然“globstar”(**) 对于本地开发和预览 URL 很有用,但我们建议为生产中的站点 URL 设置准确的重定向 URL 路径。

使用通配符重定向 URL 示例#

Redirect URLDescription
http://localhost:3000/*匹配 http://localhost:3000/foo、http://localhost:3000/bar 但不匹配 http://localhost:3000/foo/bar 或 http://localhost:3000/foo/ (注意尾部斜杠)
http://localhost:3000/**匹配 http://localhost:3000/foo、http://localhost:3000/bar 和 http://localhost:3000/foo/bar
http://localhost:3000/?匹配 http://localhost:3000/a 但不匹配 http://localhost:3000/foo
http://localhost:3000/[!a-z]匹配 http://localhost:3000/1 但不匹配 http://localhost:3000/a

Netlify 预览 URL#

对于使用 Netlify 的部署,请将SITE_URL设置为官方站点 URL。为本地开发和部署预览添加以下其他重定向 URL:

  • http://localhost:3000/**
  • https://**--my_org.netlify.app/**

Vercel 预览 URL#

对于使用 Vercel 的部署,请将SITE_URL设置为官方网站 URL。为本地开发和部署预览添加以下其他重定向 URL:

  • http://localhost:3000/**
  • https://*-username.vercel.app/**

Vercel 为名为 NEXT_PUBLIC_VERCEL_URL 的部署的 URL 提供了一个环境变量。有关更多详细信息,请参阅 Vercel 文档。您可以使用此变量根据环境动态重定向。您还应该设置名为 NEXT_PUBLIC_SITE_URL 的环境变量的值,这应该设置为生产环境中的站点 URL,以确保重定向正常运行。

1const getURL = () => {
2  let url =
3    process?.env?.NEXT_PUBLIC_SITE_URL ?? // Set this to your site URL in production env.
4    process?.env?.NEXT_PUBLIC_VERCEL_URL ?? // Automatically set by Vercel.
5    'http://localhost:3000/'
6  // Make sure to include `https://` when not localhost.
7  url = url.includes('http') ? url : `https://${url}`
8  // Make sure to include a trailing `/`.
9  url = url.charAt(url.length - 1) === '/' ? url : `${url}/`
10  return url
11}
12
13const { data, error } = await supabase.auth.signInWithOAuth({
14  provider: 'github',
15  options: {
16    redirectTo: getURL(),
17  },
18})

移动深度链接 URIs#

对于移动应用程序,您可以使用深层链接 URI。例如,对于您的SITE_URL,您可以指定类似 com.supabase://login-callback/ 的内容,如果需要,可以指定类似 com.supabase.staging://login-callback/ 的内容。

在此处阅读有关深度链接的更多信息,并查找不同框架的代码示例。