0

嗨,我正在用 mongoose 开发一个 expressjs 骨干网,我的模板引擎是 HTML(带有 text.js)。

我的应用程序有一个带有注册和登录链接的导航栏和一个放置内容的容器。我用passportjs实现了一个登录系统,它运行良好,当你登录时,你会有一个req.user对象,里面有你的用户信息。

现在我被阻止了,因为如果我登录了,我想隐藏导航栏链接。

当我对 /login 进行 POST 时,如果一切都成功,我重定向到 /account 并使用它的模板加载另一个视图,我将拥有 req.user 数据,但导航栏视图没有它,然后我不能隐藏链接。

我试图传递给翡翠,因为我可以将导航栏的 HTML 代码放在模板中,并且在 POST / login 之后呈现一个翡翠模板,其中包含带有“扩展”的导航栏模板。但是由于这个原因,我失去了所有的 Backbone 功能,因为我无法在 URL 中使用 # 进行导航。

这是正确的方法吗?

希望你能理解我,问候。

4

1 回答 1

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
}
于 2013-09-12T22:10:26.793 回答