我有一个代码,我想从前端的用户那里获取cookie,并检查它是否与bano相同,因为我在数据库和前端的cookie中有jwt令牌,因为我检查“令牌”cookie是否存在,如果不存在,它会重定向您登录,如果存在,它会检查cookie是否与银行的cookie匹配,如果匹配,它会释放页面,如果没有,它会给出一个无效的token。
"use client"
import { redirect } from 'next/navigation'
import {cookies } from "next/headers"
import { useContext } from 'react'
import { AuthContext } from '../contexts/AuthContext'
export default function ExploreCourses(){
const {user} = useContext(AuthContext)
if(!user.token){
redirect("/signIn")
}
if(user.token){
const cookie = cookies().get("token")
if(!cookie == user.token){
redirect("/signIn")
}
return
}
return(
<h2>dashboard</h2>
)
}
字符串
**错误:ReactServerError:
您正在导入一个需要next/header的组件。这只适用于服务器组件,但它的父组件之一标记为“使用客户端”,因此它是客户端组件。了解更多:https://nextjs.org/docs/getting-started/react-essentials**
现在,我想知道为什么它给出这个错误,我已经尝试使用next.js,但要做这个检查我需要getServerSideProps函数,所以检查,但它不可用,因为我使用的是app/目录,因为它给出了这个错误?我怎么能做这个检查?我是新使用next.js
1条答案
按热度按时间k10s72fa1#
您在客户端组件中使用的是仅服务器功能(头)。您应该删除文件顶部以及所有父组件上的“使用客户端”。如果需要客户端交互,可以创建子客户端组件。例如
字符串
在另一个文件中
型
在上面的例子中,YourClientComponent被标记为“use client”。你可以通过props来访问服务器上加载的数据。希望这会有帮助。