重定向 URL
概览
使用无密码登录或第三方提供程序时,MemFire Cloud 客户端库方法提供 redirectTo
参数,以指定身份验证后将用户重定向到的位置。默认情况下,用户将被重定向到SITE_URL
,但您可以修改SITE_URL或将其他重定向 URL 添加到允许列表。将必要的 URL 添加到允许列表后,可以在 redirectTo 参数中指定希望用户重定向到的 URL。
在重定向 URL 中使用通配符#
MemFire Cloud 允许您在将重定向 URL 添加到允许列表时指定通配符。您可以使用通配符匹配模式来支持来自 Netlify 和 Vercel 等提供商的预览 URL。
Wildcard | Description |
---|---|
* | 匹配任何非分隔符字符序列 |
** | 匹配任意字符序列 |
? | 匹配任何单个非分隔符 |
c | 匹配字符 c (c != *, **, ?, \, [, {, }) |
\c | 匹配字符 C |
[!{ character-range }] | 匹配不在 { 字符范围 } 中的任何字符序列。例如,[!a-z] 将不匹配 a-z 范围内的任何字符。 |
URL 中的分隔符定义为 。和 /。使用此工具来测试您的模式。
推荐
虽然“globstar”(**) 对于本地开发和预览 URL 很有用,但我们建议为生产中的站点 URL 设置准确的重定向 URL 路径。
使用通配符重定向 URL 示例#
Redirect URL | Description |
---|---|
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/
的内容。
在此处阅读有关深度链接的更多信息,并查找不同框架的代码示例。