首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getServerSideProps - Next.js的支持策略

getServerSideProps - Next.js的支持策略
EN

Stack Overflow用户
提问于 2021-09-16 21:33:41
回答 2查看 1K关注 0票数 1

我正在制作一个带有Next.js和Supabase作为BaaS的Trello克隆。

在我的Supabase表中,我有以下策略:

策略在客户端使用以下代码:

代码语言:javascript
复制
const { data } = await supabase
    .from<BoardType>('board')
    .select('*')
    .eq('id', board.id)
    .single();

但是当我试图在getServerSideProps上获取板信息时,它不起作用,它总是返回null。例如,我知道,如果您想在服务器端获得经过身份验证的用户,您必须使用supabase.auth.api.getUserByCookie(context.req),所以我不知道我是否缺少什么东西,但是我找不到任何与此相关的东西。

有人知道怎么处理吗?

编辑过的

以下是getServerSideProps代码:

代码语言:javascript
复制
export const getServerSideProps: GetServerSideProps<BoardSlugProps> = async ({
  query,
}) => {
  const { data } = await supabase
    .from<BoardType>('board')
    .select('*')
    .eq('id', query.slug as string)
    .single();
  console.log(data);
  return {
    props: {
      board: data,
    },
  };
};
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-30 06:22:01

也许不是最好的方法,但这就是我如何解决它的一些提示,从这个Github讨论https://github.com/supabase/supabase/discussions/1094#discussioncomment-714633

据我所知,Supabase客户端在服务器上与浏览器(没有会话)相比略有不同。从cookie中提取令牌并将其添加到客户端,可以让支持的请求来自经过身份验证的用户。

代码语言:javascript
复制
export const getServerSideProps: GetServerSideProps = ({ req }) => {
  const { user, token } = await supabase.auth.api.getUserByCookie(req);
  supabase.auth.setAuth(token);

  const { data, error } = await supabase.from(...
票数 2
EN

Stack Overflow用户

发布于 2022-01-17 18:24:08

我发现它用anon键在数据库上发送请求,而不是在getSSProps中发送经过身份验证的jwt。不知道为什么或者是故意的。如果您添加了角色()= 'anon‘规则,它就能工作,但在我看来,这不是您想要的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69215425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档