如何持续访问用户是否在视图中进行身份validation

我试图限制用户使用passport.js作为身份validation中间件来访问快速应用程序中的内容。 我想这样做的方式是通过使用pug.js模板inheritance将所有受限视图加载到基本模板中的块:

// All views extend this base template doctype html html head body h1 This is my base template if(authenticated) // Child templates overwrite this block with their content block content else // Otherwise, prompt user to log in a(href='/login') login 

我读过,我可以访问res.locals保存在视图中的值,但这样的值是作用于该响应,我将不得不传递一个值,如“authenticated:true”到每个模板,我最终使用以上的方法。 有没有更好的方法来在所有视图中始终如一地访问会话数据而无需重复代码,或者更好的方法来限制快速应用程序中的用户访问?

感谢您的input。

除非我误解了这个问题,否则每次渲染模板时都不必重置已authenticated 。 帕格将把你指定的任何variables传递给模板,而不会妨碍它们的值。 在确定某人是否真正被authentication之后,你的路由的内部需要传递被authenticatedvariables。

route.js

 var authenticated = true; // However you determine authenticated to be true or false res.render('/yourpage', { authenticated: authenticated }); 

你的帕格代码将保持不变。 如果通过validation,则用户可以看到该内容。 如果没有,他们将被提示login。