Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.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 对于Express.js,只为网页运行身份验证中间件_Javascript_Express_Next.js_Middleware - Fatal编程技术网

Javascript 对于Express.js,只为网页运行身份验证中间件

Javascript 对于Express.js,只为网页运行身份验证中间件,javascript,express,next.js,middleware,Javascript,Express,Next.js,Middleware,我正在使用Next.js和“Express.js”来服务受身份验证保护的网页 我们的“server.js”中有一个auth中间件,定义如下: server.use( /\/private((\/)?$|\/_next\/data\/.*)/, // exclude sub-path of /preferiti but include /private/_next/data/... authMiddleware(), ); 中间件调用我们的外部认证服务;为了避免对静态资产也

我正在使用Next.js和“Express.js”来服务受身份验证保护的网页

我们的“server.js”中有一个auth中间件,定义如下:

 server.use(
    /\/private((\/)?$|\/_next\/data\/.*)/, // exclude sub-path of /preferiti but include /private/_next/data/...
    authMiddleware(),
  );
中间件调用我们的外部认证服务;为了避免对静态资产也调用它,我们实现了一个regexp,它排除了页面的子路径(private)


在您看来,存在一种更通用的说法:“仅将此中间件应用于网页”

很抱歉没有回答这个问题,但是:您为什么要这样做?我看到很多人在问关于定制服务器的问题:使用定制服务器会留下Next.js的“成功陷阱”,这会使一切变得更加困难(因此需要询问堆栈溢出问题),并导致您进入完全定制的设置,这会使其他人难以提供帮助。为了保护页面,您可以像往常一样使用客户端模式。如果您真的不想将客户端代码交付给未经身份验证的用户,并且有很好的理由这样做,那么您可以依靠
getServerSideProps
来计算它。要回答这个问题,您的Regexp听起来不错。另一种选择是,如果在你的应用程序中有意义的话,我会将私人页面放在一个子文件夹中(例如,如果它混合了私人页面和公共页面),这样你就可以将它们隔离开来(比如
admin/
)。重定向的完整答案:是的,即将避免使用自定义服务器,这是一个很好的观点,但目前我们只有这个express中间件来检查用户是否经过身份验证(我们必须使用它)。我正在测试的一个更动态的解决方案是:
if(!req.path.includes(“\u next/static”)