2016-03-21 2 views
2

Ich habe eine Knoten Express-App, mit Express-Stormpath für die Authentifizierung/Autorisierung Ich habe eine GET-Route, die mit bestimmten Jquery-Parameter aufgerufen wird. Wenn der Benutzer angemeldet ist, funktioniert alles wie erwartet. Wenn nicht, wird der Benutzeranmeldebildschirm angezeigt. Nach der Stormpath-Authentifizierung und -Autorisierung sind meine Abfrageparameter verloren. Gibt es eine Möglichkeit, diese zu behalten?behalten Query-String nach Stormpath-Authentifizierung und Autorisierung in Knoten Express-Site

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

nach Authentifizierung req.query {} ist. Irgendwelche Ideen?

Antwort

0

Vielen Dank für die Frage, ich Stormpath arbeiten, und ich bin mehr als glücklich zu helfen. Unsere express-stormpath Bibliothek ist Open Source und wir sind immer glücklich, Fehler zu beheben und Pull Requests zu überprüfen.

Können Sie mir sagen, welche Version unserer Bibliothek Sie verwenden? Im Moment kann ich das Problem, das Sie sehen, nicht reproduzieren. Hier ist ein kurzes Beispiel, das ich zusammen mit der neuesten Version, 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); 
}); 

Mit diesem Beispiel, ich folgenden:

1.) Behaupten, dass ich nicht angemeldet, indem ich alle meine Cookies für localhost lösche.

2.) Geben Sie /admin?foo=bar in die URL-Leiste ein.

3.) Ich werde auf die Anmeldeseite umgeleitet.

4.) Ich melde mich mit gültigen Zugangsdaten an.

5.) Ich werde wie erwartet auf /admins?foo=bar umgeleitet, und ich sehe das Objekt req.query im Körper der Seite, die gerendert wird. Dies ist nur der Fall, wenn sich der Benutzer in der Gruppe admins befindet. Wenn dies nicht der Fall ist, wird die Fehlermeldung "Nicht autorisiert" angezeigt.

Können Sie meine Schritte und mein Beispiel mit Ihrer Anwendung vergleichen und uns mitteilen, ob es Unterschiede gibt? Vielen Dank!

+0

Ich benutze Version 1.0.1 und ein Wechsel zu 3.0.1 stoppt das Projekt zu arbeiten. Keine Fehler, einfach nicht laden. Irgendwelche Ideen, was zu tun ist? – cs04iz1

+1

Ich habe gerade das Changelog betrachtet und es scheint, dass dies in 1.0.3 behoben wurde, siehe die Changelog-Hinweise [hier] (http://docs.stormpath.com/nodejs/express/latest/changelog.html#version -1-0-3). Können Sie versuchen, auf 1.0.3 zu aktualisieren? – robertjd

+1

Yeap, das funktioniert! Das Upgrade auf 1.0.3 hat es geschafft! – cs04iz1

0

Ich glaube nicht, dass Stormpath Abfrage aus Anfrage entfernt.

Aber wir können es durch middlewhare vor stormpath Initialisierung Zugabe:

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); 
    }); 
+0

Thx für die Antwort. In der Middleware schlagen Sie vor, dass die req.query wie erwartet ist. Auf der Route sind beide console.logs leere Objekte {} – cs04iz1

+0

, also Sie haben console.log (req.query) hinzugefügt; vor next() in Middleware und sah, dass die Daten wie erwartet sind? – num8er

+0

Wie wäre es, stormpath.groupsRequired (['admin']) in app.get zu entfernen und app.use (stormpath.init()) zu kommentieren und zu überprüfen. Ich will nur wissen, ob Stormpath schuldig ist oder eine andere Middleware diese Dinge macht. – num8er

Verwandte Themen