我目前正在我的下一个js应用程序中编写一个身份验证系统,它使用了app router。我的应用程序有一个登录和用户 Jmeter 板路由。当用户成功登录(使用正确的用户名和密码)时,我将用户数据保存在会话存储中。因此,当用户尝试转到 Jmeter 板页面时,我想检查用户是否登录(会话存储中的数据存在)。我想我也可以在dashboard组件文件中完成,但是因为有更多的路由需要保护,我想最好在中间件中检查它。那么我如何访问中间件中的会话存储来检查用户是否登录呢?是否允许用户访问路由。我尝试访问会话存储以检查用户身份验证状态,但收到一个错误,显示sessionStorage未定义。我认为这是因为中间件处理在服务器端,而会话存储在客户端。那我该怎么做呢你知道吗?
1条答案
按热度按时间bq8i3lrv1#
最好的方法是使用cookies-next使用cookie。cookie会自动附加在每个请求上
如果你坚持使用
sessionStorage
,那么nextjs13应用目录中有RootLayout
文件。您可以在这里检查用户是否经过身份验证,或者您可以创建一个用于身份验证的上下文提供程序并检查useEffect
内部的身份验证。如果用户未通过身份验证,您可以将用户重定向到login
页面。