Autail / Session无法在带有Passport的Sails中的一个页面上工作

时间:2015-04-23 09:24:06

标签: node.js sails.js passport.js passport-local

我使用了passport来管理Sails中的身份验证。这是一个奇怪的问题。如果我检查用户以修改导航栏

<ul class="nav navbar-nav navbar-right">
            {{#if user}}
                <li>{{ user.username }}</li>
                <li><a href="/logout">Logout</a></li>
                User!
            {{else}}
                <li><a href="/login">Login</a></li>
            {{/if}}
        </ul>

登录并转到/那里什么都没有。 当我进入/ login或/ logout时,两者都使用相同的模板并共享上面的代码,我得到满足的两个条件。

screenshot

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

好的,问题是Sails中的策略仅适用于控制器,而不是视图。

Sails Docs

解决方案是创建页面控制器,将方法路由到主页视图,然后将以下策略应用于它。它通过护照传递,但不限制访问。 PageController.js

    module.exports = {
    home: function (req, res) {
        res.view();
    }
};

policies.js

    '*': ['passport'],

  PageController: {
    '*': ['passport', true]
  }