【发布时间】:2023-03-09 06:34:01
【问题描述】:
我对sailsjs 和nodejs 很陌生。我正在尝试创建一个身份验证页面,其中一旦用户通过身份验证,我想设置
req.session.user = user.id
req.session.authenticated = true
然后我需要在我的主 layout.ejs 文件中访问这些值。我已经通过使用
res.locals.user = _.clone( req.session.user )
但是,我注意到必须在每个控制器的每个函数中调用此克隆方法,以便我能够从视图中访问用户。有没有更好的方法来访问sailsjs globbaly 中的会话变量,而不必在每个控制器中克隆req.session。我正在做的一个例子可以在这里找到:
如你所见,我在控制器内的各种函数的开头调用了clone方法。
【问题讨论】:
-
如果用户id已经分配给
req.session.user,你可以在视图文件中引用一个名为user的变量,并在控制器动作中调用res.view({user: req.session.user})。 -
@bnuhero:感谢您的回复。正如我在帖子中所说,这是我不想做的。由于需要从 layout.ejs 文件中访问用户会话详细信息,因此我不想将每个控制器操作中的用户详细信息传递给视图。有什么方法可以全局访问会话详细信息,或者设置可以从任何视图中访问的值,而无需在每个控制器操作上显式设置?
-
您可以定义一个自定义中间件来实现这一点。详情请访问link