1
私はAuth0ロックを使ってReactシングルページアプリとRuby on Rails APIを設定しようとしています。auth0無効なトークンをRails API
import React from 'react';
import Auth0Lock from 'auth0-lock';
var Login = React.createClass({
componentWillMount: function() {
this.lock = new Auth0Lock('*************', '****.eu.auth0.com', {
allowedConnections: ['facebook']
});
this.lock.on('authenticated', this._doAuthentication.bind(this));
},
showLock: function() {
this.lock.show();
},
_doAuthentication(authResult) {
console.log('Bearer '+authResult.idToken);
var request = require("request");
var options = { method: 'POST',
url: 'http://localhost:3000/authenticate',
headers: { authorization: 'Bearer '+authResult.idToken } };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
console.log(authResult);
this.setToken(authResult.idToken)
},
login() {
this.lock.show()
},
loggedIn() {
return !!this.getToken()
},
setToken(idToken) {
localStorage.setItem('id_token', idToken)
},
getToken() {
return localStorage.getItem('id_token')
},
logout() {
localStorage.removeItem('id_token');
},
render: function() {
return (
<div className="login-box">
<button className="btn btn-success" onClick={this.showLock}>Sign In</button>
</div>);
}
});
export default Login;
このコードはAuth0のドキュメントに記載されています。私はまた、Rails APIのノックを設定しました。それでも、「Facebook経由で接続」ボタンをクリックすると、次のようなメッセージが表示されます。 - トークンが生成されました(有効なトークンです) - 正しい認証ヘッダーを使用してリクエストが送信されました。 - Railsは401を返します
私はRailsがヘッダを "Bearer [MY TOKEN]"として受信したことを確認しましたが、まだ401を取得しています。
私は何かを見逃しましたか?他に必要なことはありますか?
このリクエストの処理を担当するレールメソッドを投稿できますか? – Jeremie
ここで唯一の問題ではないかもしれませんが、CSRFでもかまいません。あなたはX-CSRFトークンなしでPOSTを実行しているので、protect_from_forgeryがここに衝突する可能性があります – jethroo