铁路由器路由允许/拒绝

时间:2013-11-14 17:44:15

标签: coffeescript meteor iron-router

我现在正在编写一个流星应用程序,并且已经习惯了新的Iron Router程序包(而不是之前使用的路由器程序包)。

我有一组路径,只有具有特定属性的用户才能访问。具体来说,我正在使用Roles包。我目前实现这一目标的方法是定义一个运行条件的before函数,如果用户没有正确的角色,则重定向到登录或错误页面。这里只是一个快速(coffeescript)的例子:

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

我的问题是,有更好的方法吗?似乎应该有一些方法来添加权限集,并将该权限集应用于路由,而不是为每个路由写入访问条件。

1 个答案:

答案 0 :(得分:1)

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

你可能会这样做:

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

我们在Router.configure()

下使用类似的内容