Advanced

Auth

编辑此页面

服务端函数可用于保护用户数据等敏感资源。

"use server"
async function getPrivatePosts() {
const user = await getUser()
if(!user) {
return null // or throw an error
}
return db.getPosts({ userId: user.id, private: true })
}

getUser 函数可以使用会话实现


受保护的路由

通过在数据获取期间检查用户或会话对象保护路由。此示例使用 Solid-Router

const getPrivatePosts = query(async function() {
"use server"
const user = await getUser()
if(!user) {
throw redirect("/login");
}
return db.getPosts({ userId: user.id, private: true })
})
export default function Page() {
const posts = createAsync(() => getPrivatePosts());
}

一旦用户访问此路由,路由器将尝试获取 getPrivatePosts 数据。如果用户未登录,getPrivatePosts 将抛出异常,路由器将重定向到登录页面。

报告此页面问题