Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当用户在nextjs中未经身份验证时,如何呈现404页面_Javascript_Next.js - Fatal编程技术网

Javascript 当用户在nextjs中未经身份验证时,如何呈现404页面

Javascript 当用户在nextjs中未经身份验证时,如何呈现404页面,javascript,next.js,Javascript,Next.js,我正在使用next auth对用户进行身份验证。当我导航到我的NextJS服务器上不存在的api路由时,我得到一个404响应和一个错误页面。我希望在未经验证的用户导航到我的一个api路由时模拟这种行为。我当前的测试路线如下所示: //api/test.js 从“下一个身份验证/客户端”导入{getSession} 导出默认异步(req,res)=>{ const session=wait getSession({req}); 国际单项体育联合会(届会){ //签到 res.json(json.s

我正在使用next auth对用户进行身份验证。当我导航到我的NextJS服务器上不存在的api路由时,我得到一个404响应和一个错误页面。我希望在未经验证的用户导航到我的一个api路由时模拟这种行为。我当前的测试路线如下所示:

//api/test.js
从“下一个身份验证/客户端”导入{getSession}
导出默认异步(req,res)=>{
const session=wait getSession({req});
国际单项体育联合会(届会){
//签到
res.json(json.stringify(session,null,2));
}否则{
//未登录
物质状态(404);
}
res.end();
}
不幸的是,这会导致出现空白页。理想情况下,如果未经身份验证的用户无法分辨不存在的页面和被阻止的api路由之间的区别,我会这样做。我还注意到,当我卷曲一个不存在的路由时,例如
curl-Ihttp://localhost:3000/api
,我得到以下响应(以及错误页面的所有html):

当我运行
curl-I时http://localhost:3000/api/test
要点击上述代码,我会得到以下响应:

HTTP/1.1 404 Not Found
Date: Thu, 20 May 2021 10:44:57 GMT
Connection: keep-alive
Keep-Alive: timeout=5
Transfer-Encoding: chunked

当用户未通过身份验证以查看(并返回相同的标题)作为默认的NextJS 404错误响应时,如何修改响应?

HTTP代码可能应该是401(未经授权)而不是404(未找到)True,401可能更准确,但是我想向未经身份验证的用户隐藏此路由的存在。一般来说,最好的解决方案可能是将401返回到所有api路由,如果用户未经授权,则返回404,如中所示
HTTP/1.1 404 Not Found
Date: Thu, 20 May 2021 10:44:57 GMT
Connection: keep-alive
Keep-Alive: timeout=5
Transfer-Encoding: chunked