我在expo react native应用程序中使用@supabase/supabase-js(v2.23.0)sdk。
初始化react native客户端
createClient(
'<supabaseUrl>',
'<anonKey>',
{
auth: {
storage: AsyncStorage as any,
autoRefreshToken: true,
persistSession: true,
detectSessionInUrl: false,
}
}
字符串
jwt访问令牌的过期时间在supabase Jmeter 板中设置为3600 s(1小时)。
当用户使用应用程序时,我可以在日志中看到令牌不断刷新,并且只要用户经常使用它,用户就可以继续使用应用程序而不会出现任何问题。所以autoRefreshToken
似乎工作得很好。
当用户超过一周不使用应用程序时,就会出现问题。然后令牌刷新似乎不再工作。
我有一个通用方法作为 Package 器,围绕着像这样的与supabase客户机进行调用
const selectMethod = modifier
? modifier(supabase.from(key).select(select))
: supabase.from(key).select(select);
const { data, error } = await selectMethod;
if (error) {
if (error.message === 'JWT expired') {
supabase.auth.signOut();
}
throw error;
}
型
这样,用户将被重定向到登录页面。我可以验证,在一周的不活动之后,我将开始收到“JWT过期”的回复。我添加了这个,因为否则用户将无法在不知道发生了什么的情况下查询任何数据。
我的第一个假设是刷新令牌在一周后过期,但根据本文的讨论,刷新令牌不会过期。
我发现了another discussion,其中有几个人特别报告了react native的问题。所以我想知道在supabase客户端上使用AsyncStorage是否有问题。
有人知道为什么刷新令牌会在一周不活动后停止工作吗?
1条答案
按热度按时间8oomwypt1#
你可以尝试使用
expo-secure-store
,如文档所述:https://supabase.com/docs/guides/getting-started/tutorials/with-expo#initialize-a-react-native-app字符串