我需要为我的流星应用程序提供一些REST API端点。
端点必须在服务器端可访问,所以我使用Iron路由器进行服务器端路由。
所有的作品都很棒,但现在我需要访问this.params
进行许可检查。Iron Route - 服务器端,从onBeforeAction()访问this.params()
我目前的路线:
Router.route('myServerRoute', {
where: "server",
path: '/api/v1/doit/:partner',
onBeforeAction: function(req, res, next) {
API.beforeAction(req, res, next, ['admin','API']);
}
})
的API.beforeAction
是我使用验证用户令牌(此标记在标题之一)
此功能功能检查如果令牌有效并且该用户具有来自第4个参数的角色之一。
:partner
是使用API的合作伙伴的名称。
让我们说:partner
是'store1'
(/api/v1/doit/store1
)
我想验证只有具备store1
作用用户将能够访问/api/v1/doit/store1
URL
所以我想通过:partner
参数的值到API.beforeAction
功能
在onBeforeAction
功能,我没有访问this.params
(它是空的)
一些建议使用Router.current()
访问参数但这是一个客户端调用,它是不可用的服务器端。
我可以使用req.url
,解析它并获取合作伙伴名称。但我不喜欢自己解析当我知道Iron Route已经解析了这个URL
任何建议如何获取onBeforeAction
里面的URL参数?
怪异时,[铁路由器指南上的钩子部分(http://iron-meteor.github.io/iron-router/#using-hooks说“在路由功能中可用的所有特性也可在这里如this.params“ –
@MichelFloyd,是的,我也这么认为... 我试图打印它[console.log(”params:“,JSON.stringify(this.params,null,2)); ]但它只是打印出一个空数组。 我怀疑“this.params”只有在客户端的路由是否可用。 – Izack
噢亚,服务器端。你能不能把你的角色在路由操作,而不是前检查? –