我正在制作一个带有Next.js和Supabase作为BaaS的Trello克隆。
在我的Supabase表中,我有以下策略:

策略在客户端使用以下代码:
const { data } = await supabase
.from<BoardType>('board')
.select('*')
.eq('id', board.id)
.single();但是当我试图在getServerSideProps上获取板信息时,它不起作用,它总是返回null。例如,我知道,如果您想在服务器端获得经过身份验证的用户,您必须使用supabase.auth.api.getUserByCookie(context.req),所以我不知道我是否缺少什么东西,但是我找不到任何与此相关的东西。
有人知道怎么处理吗?
编辑过的
以下是getServerSideProps代码:
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,
},
};
};发布于 2022-01-30 06:22:01
也许不是最好的方法,但这就是我如何解决它的一些提示,从这个Github讨论https://github.com/supabase/supabase/discussions/1094#discussioncomment-714633。
据我所知,Supabase客户端在服务器上与浏览器(没有会话)相比略有不同。从cookie中提取令牌并将其添加到客户端,可以让支持的请求来自经过身份验证的用户。
export const getServerSideProps: GetServerSideProps = ({ req }) => {
const { user, token } = await supabase.auth.api.getUserByCookie(req);
supabase.auth.setAuth(token);
const { data, error } = await supabase.from(...发布于 2022-01-17 18:24:08
我发现它用anon键在数据库上发送请求,而不是在getSSProps中发送经过身份验证的jwt。不知道为什么或者是故意的。如果您添加了角色()= 'anon‘规则,它就能工作,但在我看来,这不是您想要的。
https://stackoverflow.com/questions/69215425
复制相似问题