与meteor一起使用FlowRouter SSR并获取服务器上的连接信息
我们正在寻找一种处理请求连接信息的方法。我们需要的主要部分是域-用于身份验证 我们目前就是这样做的(不完全是这样,但是剪掉代码后更容易显示): 如您所见,我们检查是否在方法中设置了this.connection。这是因为当FlowRouter SSR将在服务器上呈现内容时,此连接始终设置为与meteor一起使用FlowRouter SSR并获取服务器上的连接信息,meteor,nginx,flow-router,Meteor,Nginx,Flow Router,我们正在寻找一种处理请求连接信息的方法。我们需要的主要部分是域-用于身份验证 我们目前就是这样做的(不完全是这样,但是剪掉代码后更容易显示): 如您所见,我们检查是否在方法中设置了this.connection。这是因为当FlowRouter SSR将在服务器上呈现内容时,此连接始终设置为null 现在什么在起作用?: 只有当内容呈现在客户端上时,它才会工作,因为客户端将调用Meteor方法并向其发送连接对象 它应该做什么?: 此外,当FlowRouter SSR将在服务器上呈现路由时,我们需要
null
现在什么在起作用?:
只有当内容呈现在客户端上时,它才会工作,因为客户端将调用Meteor方法并向其发送连接对象
它应该做什么?:
此外,当FlowRouter SSR将在服务器上呈现路由时,我们需要连接信息
解决方案:
我们知道有Meteor.absoluteUrl方法,但这将始终返回绝对服务器路由-但我们正在与nginx合作,将多个域与一台服务器一起使用,因此我们的示例中Meteor.absoluteUrl始终是服务器上的localhost:3000
我们已经看到FlowRouter将只向服务器上的FlowRouter对象添加一个ssrContext对象,但这个对象只添加属性槽,其他什么都没有
那么我们的问题是:
当路由由FlowRouter SSR呈现时,是否有任何方法获取有关连接的信息?当然,当没有来自客户机的实际请求时,我们无法获得连接信息-但是在FlowRouter SSR的情况下,客户机有一个请求,FlowRouter将自动以两种方式呈现路由:客户机和服务器。那么有没有办法获取信息呢
更新
我已经完成了一个小程序包,它在Picker过程中添加了req对象。你可以在这里找到它:
我不知道这是否是必要的,所以如果你知道一个内置的方式来获取这些信息,那就太好了
// Routes.jsx
FlowRouter.route('/my-route', {
action(params) {
params.auth = false;
if (Meteor.isServer) {
params.auth = Meteor.call('authMethod');
} else {
Meteor.call('authMethod', (err, auth) => {
FlowRouter.setParams({
auth
});
});
}
mount(MyApp, params);
}
});
// Methods.js - on Server only
Meteor.methods({
'authMethod'() {
if (Meteor.isClient) return false;
if (!this.connection) return false;
return this.connection.host === 'my-allowed-domain.com';
}
});