質問編集履歴
5
書式の改善
title
CHANGED
File without changes
|
body
CHANGED
@@ -94,4 +94,40 @@
|
|
94
94
|
}
|
95
95
|
}
|
96
96
|
}
|
97
|
-
```
|
97
|
+
```
|
98
|
+
### 試してみたこと
|
99
|
+
次のようにセッションのオプションを追加してみましたが、うまくいきませんでした。
|
100
|
+
|
101
|
+
/functions/index.js
|
102
|
+
```express
|
103
|
+
// 省略
|
104
|
+
// オプション追加
|
105
|
+
const sess = {
|
106
|
+
store: new FirebaseStore({
|
107
|
+
database: ref.database()
|
108
|
+
}),
|
109
|
+
secret: 'secret_key',
|
110
|
+
resave: true,
|
111
|
+
saveUninitialized: true,
|
112
|
+
name: '__session',
|
113
|
+
cookie: {
|
114
|
+
maxAge: 1000 * 60 * 60, // 有効期間 1時間
|
115
|
+
secure: false, // true でもダメ
|
116
|
+
httpOnly: false
|
117
|
+
}
|
118
|
+
};
|
119
|
+
|
120
|
+
// 省略
|
121
|
+
|
122
|
+
app.use(cookieParser());
|
123
|
+
app.use(session(sess));
|
124
|
+
|
125
|
+
// カウンターでテスト(ページ更新ごとにプラス1)
|
126
|
+
app.get('/', (req, res) => {
|
127
|
+
req.session.counter = req.session.hasOwnProperty('counter') ? req.session.counter + 1 : 1;
|
128
|
+
res.send(`カウンター: ${req.session.counter} セッションID: ${req.sessionID}`);
|
129
|
+
});
|
130
|
+
```
|
131
|
+
結果はカウンターの値が1のまま変わらず、セッションIDの値だけが変化します。
|
132
|
+
以前と同じで、データベースにはセッションの値は保存されるのですが、
|
133
|
+
ページを更新するたびに新しいセッションが追加されてしまいます。
|
4
書式の改善
title
CHANGED
File without changes
|
body
CHANGED
@@ -9,8 +9,6 @@
|
|
9
9
|
--expires: 1549045586962
|
10
10
|
--sess: "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"name\":\"yamada\"}"
|
11
11
|
--type: "connect-session"
|
12
|
-
けれども、ページをリロードすると、また別の新しいセッションができてしまいます。
|
13
|
-
なんだかうまくクッキーを認識していないようです。
|
14
12
|
ご存知の方いらっしゃいましたら、ぜひアドバイスをよろしくお願い致します。
|
15
13
|
開発環境はCloud9です。
|
16
14
|
参考にしたサイト: https://www.npmjs.com/package/connect-session-firebase
|
@@ -91,8 +89,8 @@
|
|
91
89
|
".read": false,
|
92
90
|
".write": false,
|
93
91
|
"sessions": {
|
94
|
-
".read":
|
92
|
+
".read": false,
|
95
|
-
".write":
|
93
|
+
".write": false
|
96
94
|
}
|
97
95
|
}
|
98
96
|
}
|
3
書式の改善と修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -65,8 +65,7 @@
|
|
65
65
|
res.render('index');
|
66
66
|
});
|
67
67
|
app.get('/test', (req, res) => {
|
68
|
-
|
68
|
+
res.send(`セッションの値: ${req.session.name}`);
|
69
|
-
res.send('test');
|
70
69
|
});
|
71
70
|
|
72
71
|
exports.app = functions.https.onRequest(app);
|
2
書式の改善
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,7 +1,17 @@
|
|
1
1
|
### GoogleのFirebaseについての質問
|
2
2
|
|
3
3
|
サーバー側の処理(Cloud Functions)で、セッションを使いたいのですが、うまくいきません。
|
4
|
-
セッションに値を追加して
|
4
|
+
セッションに値を追加して取得しようとすると、undefined になります。
|
5
|
+
ただし、データベースには次のような感じで値が保存されています。
|
6
|
+
(セッションのキーをname、値をyamadaで追加した例)
|
7
|
+
sessions
|
8
|
+
--Ds-KX6DYOjGiaZ7qkmpH_O_JS1WQbJ8I
|
9
|
+
--expires: 1549045586962
|
10
|
+
--sess: "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"name\":\"yamada\"}"
|
11
|
+
--type: "connect-session"
|
12
|
+
けれども、ページをリロードすると、また別の新しいセッションができてしまいます。
|
13
|
+
なんだかうまくクッキーを認識していないようです。
|
14
|
+
ご存知の方いらっしゃいましたら、ぜひアドバイスをよろしくお願い致します。
|
5
15
|
開発環境はCloud9です。
|
6
16
|
参考にしたサイト: https://www.npmjs.com/package/connect-session-firebase
|
7
17
|
|
@@ -45,8 +55,8 @@
|
|
45
55
|
database: ref.database()
|
46
56
|
}),
|
47
57
|
secret: 'secret_key',
|
48
|
-
resave:
|
58
|
+
resave: false,
|
49
|
-
saveUninitialized:
|
59
|
+
saveUninitialized: false
|
50
60
|
}));
|
51
61
|
|
52
62
|
// routing
|
1
誤字
title
CHANGED
File without changes
|
body
CHANGED
@@ -52,12 +52,11 @@
|
|
52
52
|
// routing
|
53
53
|
app.get('/', (req, res) => {
|
54
54
|
req.session.name = 'yamada';
|
55
|
-
res.render('index');
|
55
|
+
res.render('index');
|
56
56
|
});
|
57
57
|
app.get('/test', (req, res) => {
|
58
58
|
console.log('セッションの値:', req.session.name);
|
59
|
-
res.send('test');
|
59
|
+
res.send('test');
|
60
|
-
|
61
60
|
});
|
62
61
|
|
63
62
|
exports.app = functions.https.onRequest(app);
|