401 Ошибка с пост-запросом Stormpath Express + React + Node + Gulp

При попытке войти в систему любого пользователя возникает следующая ошибка POST:

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.

В моем файле server.js я поместил следующее:

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) {}
  });
});

В мой файл login.jsx я включил:

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);

      });

Я также сохранил свой файл stormpath.yml.

Я не использую React-Stormpath, потому что я уже создал свои представления для входа в систему и регистрации. Похоже, мне нужен только доступ к API REST с помощью Stormpath, но я не уверен, что мне нужно добавить, чтобы проверить ключ API.

Должен ли я в реальном файле login.jsx отправлять пару ID:SECRET, а также часть запроса POST?

1 ответ

Я вижу это в вашем login.jsx вы пытаетесь опубликовать напрямую в REST API Stormpath, но, к сожалению, это пока невозможно. Вместо этого вы отправите сообщение на ваш сервер Express, и оно, в свою очередь, будет связываться с Stormpath.

У тебя уже есть express-stormpath на вашем сервере Express, поэтому вам просто нужно опубликовать форму входа в /login а Stormpath позаботится обо всем остальном:)

Дайте нам знать, если у вас возникнут какие-либо проблемы! К вашему сведению, мы скоро добавим функцию "без сервера", вы можете следить за этим здесь: http://ideas.stormpath.com/ideas/IAM-I-59

Другие вопросы по тегам