Javascript Meteor JS(铁路由器)-限制对服务器路由的访问

Javascript Meteor JS(铁路由器)-限制对服务器路由的访问,javascript,meteor,iron-router,Javascript,Meteor,Iron Router,我的MeteorJs应用程序中有一个下载路径,我想限制对它的访问。路线代码如下 Router.route("/download-data", function() { var data = Meteor.users.find({ "profile.user_type": "employee" }).fetch(); var fields = [...fields]; var title = "Employee - Users"; var file = Excel.export(title,

我的MeteorJs应用程序中有一个下载路径,我想限制对它的访问。路线代码如下

Router.route("/download-data",  function() {
var data = Meteor.users.find({ "profile.user_type": "employee" }).fetch();
var fields = [...fields];

var title = "Employee - Users";

var file = Excel.export(title, fields, data);

var headers = {
  "Content-type": "application/vnd.openxmlformats",
  "Content-Disposition": "attachment; filename=" + title + ".xlsx"
};

 this.response.writeHead(200, headers);
 this.response.end(file, "binary");
 },
 { where: "server" }
);
路由自动下载一个文件。这目前正在工作,但我想限制对路线的访问。我只希望管理员能够下载它

我已经创建了一个
onBeforeAction
Hook,如下所示

Router.onBeforeAction(
  function() {
    //using alanning:roles
    if(Roles.userIsInRole(this.userId, "admin"){
     console.log('message') //testing
   }
  },
  {
    only: ["downloadData"]
  }
);
并将我的路线重命名如下

//code above
this.response.writeHead(200, headers);
 this.response.end(file, "binary");
 },
 { where: "server", name: "downloadData" }
);
onBeforeAcion
钩子不起任何作用


此外,我还注意到,无论是
this.userId
还是
Meteor.userId
都不能在路由上工作

对于服务器端钩子,我非常确定您需要onBeforeAction来拥有{where:“server”}部分,就像您对路由所做的那样

此外,我认为iron:router从未在其路由上实现服务器端用户身份验证。您可能希望查看具有更大功能的服务器路由包,例如mhagmajer:可以访问经过身份验证的路由的服务器路由器