1

我现在正在编写一个流星应用程序,并且正在习惯新的 Iron Router 包(与我之前使用的路由器包相反)。

我有一组路线,只有具有特定属性的用户才能访问。具体来说,我使用的是 Roles 包。我目前实现这一点的方法是定义一个运行条件的 before 函数,如果用户没有适当的角色,则重定向到登录或错误页面。这只是一个快速(咖啡脚本)示例:

this.route 'home',
    path: '/' 
    template: 'dashboard'
    before: ->
      unless Meteor.userId()
        this.redirect 'userUnauthorized'
        do this.stop

我的问题是,有没有更好的方法来做到这一点?似乎应该有某种方法来添加权限集,并将该权限集应用于路由,而不是为每个路由编写访问条件。

4

1 回答 1

1

您可以在路线中设置全局“之前”。我没有在我当前的应用程序中使用角色,但我们会根据用户是否登录在全球范围内重定向用户。

你可能会做这样的事情:

Router.before(function() {
  unless(Meteor.userId()) {
    this.redirect('userUnauthorized');
    do (this.stop)
  }
}, {except: ['userUnauthorized', 'otherPageUnauthorizedUsersAllowedToSee']});

我们在下面使用类似的东西Router.configure()

于 2013-11-14T18:40:07.713 回答