Wenn jeder Benutzer anmelden versuchen, die folgenden POST-Fehlerergebnisse:401 Fehler bei der Post-Anforderung Stormpath Express + Reagieren + Node + Gulp
XMLHttpRequest cannot load https://api.stormpath.com/v1/applications/[APP_HREF]/login. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access. The response had HTTP status code 401.
In meiner server.js Datei, habe ich folgendes sagen:
var express = require('express');
var stormpath = require('express-stormpath');
var cors = require('cors');
var app = express();
app.use(stormpath.init(app, {
apiKey: {
id: 'xyz',
secret: 'abc' // Using the unsafe inline option for example purposes
},
application: {
href: `[APP_HREF]`
},
web: {
produces: ['application/json']
},
debug: 'info'
}));
app.use(cors({
origin: 'http://localhost:8080',
credentials: true
}));
app.post('/', stormpath.loginRequired, function (req, res) {
function writeError(message) {
res.status(400);
res.json({ message: message, status: 400 });
res.end();
}
});
app.on('stormpath.ready', function() {
var server = app.listen(process.env.PORT, function() {
try {
process.send('CONNECTED');
} catch(e) {}
});
});
In meiner login.jsx Datei habe ich eingeschlossen:
login: function(e) {
e.preventDefault();
e.stopPropagation();
this.serverRequest = $.post('https://api.stormpath.com/v1/applications/[APP_HREF]/login',
{
"username": document.getElementById("email").value,
"password": document.getElementById("pass").value
}, function (result) {
console.log(result);
});
ich habe auch meine stormpath.yml-Datei gespeichert.
Ich verwende nicht React-Stormpath, weil ich bereits meine Ansichten für Login und Registrierung erstellt habe. Es sieht so aus, als müsste ich nur mit Stormpath auf die REST-API zugreifen, aber ich bin mir nicht sicher, was ich hinzufügen muss, um den API-Schlüssel zu validieren.
Auf der tatsächlichen login.jsx-Datei, müsste ich das ID: SECRET-Paar sowie einen Teil der POST-Anfrage senden?
Vielen Dank! Wenn ich mein Login-Formular an/login sende, sage ich, dass ich die Funktion innerhalb von login.jsx in 'this.serverRequest = $ .post ('/ login', { " Benutzername ": document.getElementById (" E-Mailadresse ") Wert, "Passwort": document.getElementById (" Passwort ") Wert } function (result) { console.log (Ergebnis); });' .? Ich verstehe es konzeptionell, bin mir aber nicht sicher, welches Posting auf meinem Express-Server in der Praxis aussehen würde. Vielen Dank! – kkers
Ja! Das ist es. Dann akzeptiert das 'Express-stormpath'-Modul den POST zum'/login'-Endpunkt und verwendet Stormpath, um den Benutzer zu authentifizieren und ein Sitzungscookie für den Browser zu erstellen. – robertjd