Rails アプリと node.js アプリがあり、Devise を使用してユーザーを認証しています。セッションを Redis で保存します。ユーザーがノードアプリにアクセスすると、ユーザーがログインしているかどうかをアプリがsocket.ioを介してチェックするようになりました。redis からセッション データを取得できましたが、それらを解釈してユーザーがログインしているかどうかを確認する方法がわかりません。
_session_id がデータベースに存在するかどうかを確認し、セッション データを取得するノード アプリのコードを次に示します。
io.set('authorization', function (data, accept) {
if (data.headers.cookie) {
data.cookie = cookie.parse(data.headers.cookie);
data.sessionID = data.cookie['_session_id'];
redis.get(data.sessionID, function (err, session) {
if (err || !session) {
accept('Error', false);
} else {
data.session = session;
console.log(session);
accept(null, true);
}
});
} else {
return accept('No cookie transmitted.', false);
}
});
これは console.log(session) が私に与えるものです:
{I"_csrf_token:EFI"1HPglfkCCagvb1LLraU1CEEyx7AtDzztqAEPY5G5lNgY=;FI"warden.user.user.key;TI" User;F[iI""$2a$10$IHq2WAhwbaqR4WWajRE/Yu;T
ユーザーが node アプリを使用して Rails アプリにログインしているかどうかを確認するにはどうすればよいですか? ありがとう
編集:私が使用するredisストアgemは、セッションをデータベースに保存する前にマーシャリングメソッドを呼び出すようです。そのため、マーシャリング メソッドをオーバーライドすることで問題を回避し、セッション データを JSON 形式で保存しました。あまりエレガントではないので、rails と node.js の間でセッションを共有するためのより良い方法を見つけたら、お知らせください。