【问题标题】:Meteor routing filter not working流星路由过滤器不起作用
【发布时间】:2023-04-03 17:54:01
【问题描述】:

我正在尝试为我的流星项目创建一个管理界面,为此我创建了一个自定义帐户注册表单,上面写着

Accounts.createUser({
email: userEmail,
password: userPassword,
admin: true
})

在我的 router.js 代码中我有这个

Router.route('/admin', {name: 'admin'})

var requireAdminLogin = function(){
if(!Meteor.user({admin: true})){
this.render('accessDenied')
}else{
this.next();
}
}

Router.onBeforeAction(requireAdminLogin, {only: 'admin'})

问题是即使我更改我的注册码说注册的新用户不是管理员,我仍然可以进入我的管理页面。任何人都可以帮忙吗?谢谢

【问题讨论】:

    标签: meteor iron-router


    【解决方案1】:

    Meteor.user() 不接受任何参数。你可能想要:

    if (Meteor.user() && Meteor.user().admin) {
      // admin
    } else {
      // access denied
    }
    

    我还怀疑将admin 选项传递给Accounts.createUser 不会做任何事情。在服务器上,您可以执行var userId = Accounts.createUser 后跟Meteor.users.update(userId, {$set: {admin: true}});

    【讨论】:

      【解决方案2】:

      一个名为houston:admin 的包正是我想做的。

      【讨论】:

      • 我不相信这只是一个链接的答案。 OP 找到了一个满足他要求的包并将其发布为答案。我已经编辑了答案,以减少对链接的重视。
      猜你喜欢
      • 2014-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-22
      • 1970-01-01
      • 2016-05-04
      • 1970-01-01
      • 2015-03-01
      相关资源
      最近更新 更多