我正在用mongoose开发一个expressjs backbonejs,我的模板引擎是HTML(带有text.js)。
我的应用程序有一个带有注册和登录链接的导航栏和一个放置内容的容器。我使用passportjs实现了一个登录系统,它运行良好,当您登录时,您将拥有一个带有您的用户信息的req.user对象。
现在我被屏蔽了因为如果我已登录,我想隐藏导航栏链接。
当我对POST进行/登录时如果一切都成功,我重定向到/ account并加载另一个带有模板的视图,我会有req.user数据但导航栏视图没有它然后我无法隐藏链接。
我试图传递给jade,因为我可以将导航栏的HTML代码放在模板中,然后在POST / login后呈现包含带有“extends”的导航栏模板的玉石模板。但是在这个原因中我丢失了所有的Backbone功能,因为我无法在URL中使用#进行导航。
这是正确的方法吗?
希望你理解我,问候。
答案 0 :(得分:0)
您可以使用单例模式解决问题。即例如,具有方法 isLogged 的全局配置对象。我们的想法是在应用程序的入口点初始化此对象。您拥有所需数据并稍后通过该单例访问它的位置。例如:
var AppConfig = (function() {
var isLoggedFlag = false;
var changeLoggedStatus = function(value) {
isLoggedFlag = value;
}
var isLogged = function() {
return isLoggedFlag;
}
return {
isLogged: isLogged,
changeLoggedStatus: changeLoggedStatus
}
})();
当您知道用户已登录时,请使用:
AppConfig.changeLoggedStatus(true);
在您看来,请检查
if(!AppConfig.isLogged()) {
// hide whatever you need to
}