繁体   English   中英

在节点快递站点中经过Stormpath身份验证和授权后保留查询字符串

[英]retain query string after Stormpath authentication and authorization in node express site

我有一个节点express应用程序,使用express-stormpath进行身份验证/授权,我有一个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工作,我们非常乐意提供帮助。 我们的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.)通过删除我所有的localhost cookie来声明我尚未登录。

2.)在网址栏中输入/admin?foo=bar bar。

3.)我被重定向到登录页面。

4.)我使用有效的凭据登录。

5.)正如预期的那样,我被重定向到/admins?foo=bar ,并且在呈现的页面正文中看到了req.query对象。 仅当用户位于admins组中时,这才是正确的;否则,我将看到“未经授权”错误消息页面。

您能否将我的步骤和示例与您的应用程序进行比较,并让我们知道是否存在差异? 谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM