在节点快速站点中进行 Stormpath 身份验证和授权后保留查询字符串
retain query string after Stormpath authentication and authorization in node express site
我有一个 node express 应用程序,使用 express-stormpath authentication/authorization
我有一个 GET 路由,它使用某些 jquery 参数调用。
如果用户登录,一切都按预期工作。
如果不是,则显示用户登录屏幕。
完成 stormpath 身份验证和授权后,我的查询参数丢失了。
有什么办法可以保留这些吗?
app.get('/myRoute', stormpath.groupsRequired(['admin']), function(req, res){
console.log('req.query ',req.query);
//do somehting with the query data
res.sendStatus(200);
});
认证后 req.query 是 {}
。
有什么想法吗?
我认为 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);
});
谢谢你的提问,我在 Stormpath and I'm more than happy to help. Our express-stormpath 工作 图书馆是开源的,我们总是很乐意修复错误和审查拉取请求。
您能告诉我您使用的是我们图书馆的哪个版本吗?目前我无法重现您遇到的问题。这是我与最新版本 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.) 通过删除本地主机的所有 cookie 来断言我没有登录。
2.) 在 URL 栏中输入 /admin?foo=bar
。
3.) 我被重定向到登录页面。
4.) 我使用有效凭据登录。
5.) 正如预期的那样,我被重定向到 /admins?foo=bar
,并且我在呈现的页面正文中看到了 req.query
对象。仅当用户在 admins
组中时才会出现这种情况,否则我将看到 "Unauthorized" 错误消息页面。
您能否将我的步骤和示例与您的应用程序进行比较,如果有任何差异,请告诉我们?谢谢!
我有一个 node express 应用程序,使用 express-stormpath authentication/authorization 我有一个 GET 路由,它使用某些 jquery 参数调用。 如果用户登录,一切都按预期工作。 如果不是,则显示用户登录屏幕。 完成 stormpath 身份验证和授权后,我的查询参数丢失了。 有什么办法可以保留这些吗?
app.get('/myRoute', stormpath.groupsRequired(['admin']), function(req, res){
console.log('req.query ',req.query);
//do somehting with the query data
res.sendStatus(200);
});
认证后 req.query 是 {}
。
有什么想法吗?
我认为 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);
});
谢谢你的提问,我在 Stormpath and I'm more than happy to help. Our express-stormpath 工作 图书馆是开源的,我们总是很乐意修复错误和审查拉取请求。
您能告诉我您使用的是我们图书馆的哪个版本吗?目前我无法重现您遇到的问题。这是我与最新版本 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.) 通过删除本地主机的所有 cookie 来断言我没有登录。
2.) 在 URL 栏中输入 /admin?foo=bar
。
3.) 我被重定向到登录页面。
4.) 我使用有效凭据登录。
5.) 正如预期的那样,我被重定向到 /admins?foo=bar
,并且我在呈现的页面正文中看到了 req.query
对象。仅当用户在 admins
组中时才会出现这种情况,否则我将看到 "Unauthorized" 错误消息页面。
您能否将我的步骤和示例与您的应用程序进行比较,如果有任何差异,请告诉我们?谢谢!