正如描述所说,当你点击电子邮件时,它会把你带到主页,你可以在url和console.log的日志中看到访问令牌,用户为null。
产品编号:https://github.com/polooner/diverse-stem/blob/main/src/auth.ts
src/auth.ts
import { createClient } from '@supabase/supabase-js';
import cookie from 'cookie';
export const supabase = createClient(
import.meta.env.PUBLIC_SUPABASE_URL,
import.meta.env.PUBLIC_SUPABASE_ANON_KEY
);
export async function getUser(req: Request) {
const c = cookie.parse(req.headers.get('cookie') ?? '');
if (!c.sbat) {
return null;
}
console.log(c.sbat);
const {
data: { user },
} = await supabase.auth.getUser(c.sbat);
if (!user || user.role !== 'authenticated') {
return null;
}
console.log(user);
return user;
}
export async function isLoggedIn(req: Request) {
return (await getUser(req)) != null;
}
字符串
src/pages/API/login.astro
---
import {supabase} from "../../auth"
const body = await Astro.request.json();
Astro.response.headers.set('Set-Cookie', `sbat=${body.access_token}; Path=/;`);
---
型
1条答案
按热度按时间lmvvr0a81#
您要查找的是
getSession
而不是getUser
。请参见https://supabase.com/docs/guides/auth/server-side-rendering我们大致使用以下Astro中间件来实现这一点:
字符串