在节点快递站点的Stormpathvalidation和授权后保留查询string

我有一个节点快递应用程序,使用express-stormpath进行身份validation/授权我有一个GET路由与某些jquery参数调用。 如果用户login,所有事情都按预期工作。 如果没有显示用户login屏幕。 在stormpath身份validation和授权完成后,我的查询参数将丢失。 有什么办法保留这些吗?

app.get('/myRoute', stormpath.groupsRequired(['admin']), function(req, res){ console.log('req.query ',req.query); //do somehting with the query data res.sendStatus(200); }); 

在authenticationreq.query是{} 。 有任何想法吗?

谢谢你的提问,我在Stormpath工作,我非常乐意帮忙。 我们的express-stormpath库是开源的,我们总是乐于修复错误并查看pull请求。

你能告诉我你正在使用哪个版本的图书馆吗? 目前我无法重现您所看到的问题。 这是一个简单的例子,我把最新版本3.0.1放在一起:

 'use strict'; var express = require('express'); var stormpath = require('express-stormpath'); var app = express(); var port = process.env.PORT || 3000; app.use(stormpath.init(app)); app.get('/admins', stormpath.groupsRequired(['admins']), function(req, res){ res.json(req.query); }); app.on('stormpath.ready',function () { console.log('Stormpath Ready'); }); app.listen(port, function () { console.log('Server listening on http://localhost:' + port); }); 

用这个例子,我做了以下几点:

1.)声明我没有login,通过删除所有的本地主机的Cookie。

2.)在地址栏input/admin?foo=bar bar。

3.)我被redirect到login页面。

4.)我用有效的凭据login。

5.)我被redirect到/admins?foo=bar ,如预期的那样,我看到了呈现的页面主体中的req.query对象。 这只有当用户在admins组中,如果他们不是,我会看到“未经授权”错误信息页面。

你能比较我的步骤和我的例子到你的应用程序,让我们知道是否有任何分歧? 谢谢!

我不认为stormpath是从请求中删除查询。

但是我们可以在stormpath初始化之前通过添加middlewhare来检查它:

 var express = require('express'); var stormpath = require('express-stormpath'); var app = express(); // binding middleware to assign req.query to req.q param app.use(function(req, res, next) { req.QUERY = req.query; next(); }); function restoreQuery(req, res, next) { req.query = req.QUERY; next(); } app.use(stormpath.init(app, { // Optional configuration options. })); app.get('/myRoute', stormpath.groupsRequired(['admin']), restoreQuery, function(req, res){ console.log('req.query ',req.query); //do somehting with the query data res.sendStatus(200); });