簡體   English   中英

流星中間件和服務器端路由

[英]Meteor middleware and Server side routes

看來,在Meteor中,如果沒有正常工作流程(根據我對服務器端路由的了解)進行某種變通,就無法調用服務器端路由將文件呈現到頁面。 我希望我對此是錯誤的,並且有一種簡單的方法可以實現我想要做的事情...

軟件/版本

我使用的是最新的Iron Router 1. *和Meteor 1. *,首先,我使用的是Accounts-password。

背景/上下文

我有一個onBeforeAction,可以根據用戶是否登錄簡單地將用戶重定向到歡迎頁面或主頁:

兩者/ routes.js

Router.onBeforeAction(function () {
  if (!Meteor.user() || Meteor.loggingIn())
    this.redirect('welcome.view');
  else
    this.next();
  }
  ,{except: 'welcome.view'}
);

Router.onBeforeAction(function () {
  if (Meteor.user())
    this.redirect('home.view');
  else
    this.next();
  }
  ,{only: 'welcome.view'}
);

在同一個文件both / routes.js中,我有一條簡單的服務器端路由,該路由將pdf呈現到屏幕上,如果刪除了onBeforeAction代碼,則該路由有效(pdf呈現到頁面上):

Router.route('/pdf-server', function() {
  var filePath = process.env.PWD + "/server/.files/users/test.pdf";
  console.log(filePath);
  var fs = Npm.require('fs');
  var data = fs.readFileSync(filePath);
  this.response.write(data);
  this.response.end();
}, {where: 'server'});

服務器路由引發異常

這很重要,但是當我將上面的服務器端路由添加到文件中並采用路由/ pdf-server時,卻出現了一個異常,同時保留了onBeforeAction代碼。

對異常的見解可以在這里找到: 關於異常的問題

我的問題

問題4:我看過一些地方將中間件用於服務器端路由,例如:

WebApp.connectHandlers.stack.splice(...);

WebApp.connectHandlers.use(function(...) ...);

但是這些示例都沒有內部安全性,以這種方式使用中間件是否可以解決我的問題?

注意:該問題是此處找到的一個較大的SO問題的子集,但我認為我將對此進行細分,因為該主題確實值得其自己的問題IMO。

@David Weldon回答了問題的一部分,即如何呈現服務器端路由: Iron Router和Meteor中的服務器端路由 中間件不能解決另一半,即身份驗證。 關於此的一個SO問題已經發布: Meteor中服務器端路由上的身份驗證

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM