2016-08-29 10 views
1

任意のユーザーは、以下のPOSTエラー結果をログインしようとすると:401エラー+ +ノード+がぶ飲みを反応させるの

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ファイルでは、私は次のことを入れている:

私login.jsxファイルで
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: 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を使用していません。すでにログインと登録のビューを作成しているからです。私はStormpathでREST APIにアクセスする必要があるようですが、私はAPIキーを検証するために何を追加する必要があるのか​​分かりません。

実際のlogin.jsxファイルでは、ID:SECRETペアとPOSTリクエストの一部を送信する必要がありますか?

答えて

2

あなたのlogin.jsxでは、Stormpath REST APIに直接投稿しようとしていますが、残念ながらそれはまだできません。代わりに、あなたのExpressサーバーへの投稿を作成し、Stormpathと通信します。

あなたはすでにExpressのサーバーにexpress-stormpathを持っているので、あなただけの/loginにログインフォームをポストする必要があるとStormpathは残りの世話をします:)

あなたはすべての問題に実行する場合、私たちは知ってみましょう!参考までに、すぐに「サーバーレス」機能を追加する予定です。ここでそれに従うことができます:http://ideas.stormpath.com/ideas/IAM-I-59

+0

ありがとうございました!私のログインフォームを/ loginに投稿すると、login.jsx内の関数を 'this.serverRequest = $ .post( '/ login'、 { " username ":document.getElementById(" EMAILADDRESS ")値、 "パスワード":のdocument.getElementById(" パスワード ")値 }、関数(結果){ にconsole.log(結果); });' 。?私はそれを概念的に理解していますが、私のExpressサーバーへの投稿は実際にどのように見えるのかはわかりません。ありがとうございました! – kkers

+0

それでおしまい。次に、 'express-stormpath'モジュールはPOSTを'/login'エンドポイントに受け入れ、Stormpathを使ってユーザを認証し、ブラウザのセッションクッキーを作成します。 – robertjd

関連する問題