我现在正在编写一个流星应用程序,并且已经习惯了新的Iron Router程序包(而不是之前使用的路由器程序包)。
我有一组路径,只有具有特定属性的用户才能访问。具体来说,我正在使用Roles包。我目前实现这一目标的方法是定义一个运行条件的before函数,如果用户没有正确的角色,则重定向到登录或错误页面。这里只是一个快速(coffeescript)的例子:
this.route 'home',
path: '/'
template: 'dashboard'
before: ->
unless Meteor.userId()
this.redirect 'userUnauthorized'
do this.stop
我的问题是,有更好的方法吗?似乎应该有一些方法来添加权限集,并将该权限集应用于路由,而不是为每个路由写入访问条件。
答案 0 :(得分:1)
您可以在路线中设置全局“之前”。我没有在我当前的应用中使用角色,但我们会根据用户是否已登录来全局重定向用户。
你可能会这样做:
Router.before(function() {
unless(Meteor.userId()) {
this.redirect('userUnauthorized');
do (this.stop)
}
}, {except: ['userUnauthorized', 'otherPageUnauthorizedUsersAllowedToSee']});
我们在Router.configure()