私はMeteorとReactを使って小さなアプリを構築しています。私は外部APIを消費する必要があるため、素晴らしいMeteorアカウントライブラリを使用してユーザー認証を処理しているわけではありません。流星、反応、認証、認可の問題
基本的にMeteorのサーバー側は、APIと通信するためのプロキシとして使用されます。
私は流星からAPIへの認証を作成しました:
Meteor.methods({
'user.authentication': function (email, password) {
try {
const res = request.postSync(authenticate, {
method: 'POST',
json: true,
body: {
email, password
}
});
if (res.response.statusCode === 200) {
return res.body;
}
throw new Meteor.Error(res.response.statusCode, res.response.body.error.message);
} catch (err) {
throw new Meteor.Error(400, err.message);
}
}
});
これは正常に動作している...ログインするコンポーネントは、私は、「保存」するために何をしようとしている成功したデータを送信および受信しますユーザセッションは、流星セッションを使用している:
Login.js:
onSubmit(e) {
e.preventDefault();
const email = this.refs.email.value.trim();
const password = this.refs.password.value.trim();
Meteor.call('user.authentication', email, password, (error, res) => {
if (error) {
console.error(error.reason);
} else {
Session.set({
user_id: res.response.user_id,
token: res.response.token
});
history.push('/account');
}
});
}
残念ながらセッションの値が正しく保存されていないため、認証済みまたは認証されていないユーザーを正しいページにリダイレクトするコントロールを作成できません...
私のアプローチが正しいかどうかわかりません。私が間違ってやっていることを知りたいのであれば、それを処理するためのより良い解決策があるかどうかを知りたい。
たとえば、トークンとuser_idをクライアントに保存するのは好きではありません。Meteorのようにサーバー側を保存したいと思っています。ユーザーコレクションのために、毎回トークンを渡さずにすべてのAPIリクエストを処理できます。 。