我正在尝试使用passport.js作为身份验证中间件限制用户访问快速应用中的内容。我想这样做的方法是使用pug.js模板继承将所有受限制的视图加载到基本模板中的块中:
TRIGGER
我已经读过我可以访问视图中res.locals中保存的值,但是这些值的范围限定为该响应,我必须将“authenticated:true”之类的值传递给每个模板我最终使用上述方法渲染。是否有更好的方法可以在没有代码重复的情况下一致地访问所有视图中的会话数据,或者可能是更好的方法来限制快速应用程序中的用户访问?
答案 0 :(得分:1)
除非我误解了这个问题,否则每次渲染模板时都不必重置authenticated
为真。 Pug会将您指定的任何变量传递给模板,而不会妨碍其值。在确定某人是否实际经过身份验证后,您的路线内部需要传递authenticated
变量。
<强> route.js 强>
var authenticated = true; // However you determine authenticated to be true or false
res.render('/yourpage', {
authenticated: authenticated
});
您的Pug代码将保持不变。如果经过身份验证,则用户可以看到该内容。如果没有,他们将被提示登录。