我是Next.js的新手,正在客户端React上下文中存储JWT授权令牌,并希望将该令牌从客户端上下文中“传递”到服务器组件,以便可以通过headers()
或cookies()
函数从服务器组件检索该令牌。
我假设我需要在客户端代码上“设置”这些头文件和cookie,但是怎么做呢?
我更喜欢使用headers()
,因为我可以控制何时/是否发送凭据;对于cookie,我假设它总是与每个请求一起发送。
Next.js 13的稳定版本有一个Authentication文档,但我是从不使用getServerSideProps()
的app目录(beta)版本开始的。
稳定文档还提到了iron-session
,我在Next.js 13中的一个如何读取cookie的示例中发现了这个问题,但它没有显示如何设置它。
tl;dr 如何在客户端设置头文件和cookie,以便可以通过服务器组件中的headers()
或cookies()
函数读取它们?
1条答案
按热度按时间bjp0bcyl1#
pages/api/auth/login
。您检查验证并创建令牌。我使用
cookies-next
库来处理cookie。使用
cookies-next
req
对象并检查用户是否经过身份验证。为了在next.js中处理此问题,我创建了一个端点api/auth/me
。我向此端点发送了一个请求,以检查用户是否具有有效的jwt。我必须在app目录的顶层组件中执行此操作。我创建了一个Authentication Context,并在useEffect
中检查用户的状态。在身份验证上下文中,客户端组件
pages/api/auth/me
端点。我在auth上下文中发出请求
这是一个客户端组件
根据您设置的数据有条件地显示用户名或登录按钮。
cookies-next
注销非常简单