【问题标题】:Match onBeforeAction to only a group of routes using Iron Router for Meteor使用 Iron Router for Meteor 仅将 onBeforeAction 匹配到一组路由
【发布时间】:2015-07-05 19:18:59
【问题描述】:

使用 Iron Router for Meteor,我知道在定义 onBeforeAction 时可以使用参数 'only' 或 'except' 来匹配命名路由器,如指南中的示例:

Router.onBeforeAction(myAdminHookFunction, {
  only: ['admin']
});

想象一下,我有很多视图在操作之前不需要它,比如公共页面,还有很多需要它,比如管理面板。有没有办法将此 onBeforeAction 应用于一组没有明确列出每个路由的路由?我的意思是,例如,适用于以“/admin”开头的所有路由,例如:

only: ['/admin/*']

或者也许将 onBeforeAction 应用于父路由,然后定义嵌套路由? (我找不到 Iron Route 是否支持嵌套路由),例如:

Router.route('/admin/', {
    name: 'admin',
    onBeforeAction: function() {},
    routes: [
        {name: 'users', path: '/admin/users', action: function() {}},
        {name: 'posts', path: '/admin/posts', action: function() {}}
    ]
})

【问题讨论】:

    标签: meteor iron-router


    【解决方案1】:

    我建议创建controllers。创建一个“基础”控制器并在需要的地方扩展它。

    【讨论】:

    • 在我的应用程序中,我有一个 anonymous 控制器来处理未登录的用户。 authenticated 控制器在此基础上处理登录用户,最后是一个 admin 控制器,用于处理根据定义必须登录的管理员用户。
    • @MichelFloyd 如果您使用alanning:roles 包并检查它们是否被授权,您可能想查看一个非常基本的package I made that makes it easy to limit routes to roles
    • 谢谢@Oskar。我只是提供了一个分层 IR 控制器的简单示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多