質問編集履歴
5
書式の改善
test
CHANGED
File without changes
|
test
CHANGED
@@ -191,3 +191,75 @@
|
|
191
191
|
}
|
192
192
|
|
193
193
|
```
|
194
|
+
|
195
|
+
### 試してみたこと
|
196
|
+
|
197
|
+
次のようにセッションのオプションを追加してみましたが、うまくいきませんでした。
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
+
/functions/index.js
|
202
|
+
|
203
|
+
```express
|
204
|
+
|
205
|
+
// 省略
|
206
|
+
|
207
|
+
// オプション追加
|
208
|
+
|
209
|
+
const sess = {
|
210
|
+
|
211
|
+
store: new FirebaseStore({
|
212
|
+
|
213
|
+
database: ref.database()
|
214
|
+
|
215
|
+
}),
|
216
|
+
|
217
|
+
secret: 'secret_key',
|
218
|
+
|
219
|
+
resave: true,
|
220
|
+
|
221
|
+
saveUninitialized: true,
|
222
|
+
|
223
|
+
name: '__session',
|
224
|
+
|
225
|
+
cookie: {
|
226
|
+
|
227
|
+
maxAge: 1000 * 60 * 60, // 有効期間 1時間
|
228
|
+
|
229
|
+
secure: false, // true でもダメ
|
230
|
+
|
231
|
+
httpOnly: false
|
232
|
+
|
233
|
+
}
|
234
|
+
|
235
|
+
};
|
236
|
+
|
237
|
+
|
238
|
+
|
239
|
+
// 省略
|
240
|
+
|
241
|
+
|
242
|
+
|
243
|
+
app.use(cookieParser());
|
244
|
+
|
245
|
+
app.use(session(sess));
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
// カウンターでテスト(ページ更新ごとにプラス1)
|
250
|
+
|
251
|
+
app.get('/', (req, res) => {
|
252
|
+
|
253
|
+
req.session.counter = req.session.hasOwnProperty('counter') ? req.session.counter + 1 : 1;
|
254
|
+
|
255
|
+
res.send(`カウンター: ${req.session.counter} セッションID: ${req.sessionID}`);
|
256
|
+
|
257
|
+
});
|
258
|
+
|
259
|
+
```
|
260
|
+
|
261
|
+
結果はカウンターの値が1のまま変わらず、セッションIDの値だけが変化します。
|
262
|
+
|
263
|
+
以前と同じで、データベースにはセッションの値は保存されるのですが、
|
264
|
+
|
265
|
+
ページを更新するたびに新しいセッションが追加されてしまいます。
|
4
書式の改善
test
CHANGED
File without changes
|
test
CHANGED
@@ -19,10 +19,6 @@
|
|
19
19
|
--sess: "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"name\":\"yamada\"}"
|
20
20
|
|
21
21
|
--type: "connect-session"
|
22
|
-
|
23
|
-
けれども、ページをリロードすると、また別の新しいセッションができてしまいます。
|
24
|
-
|
25
|
-
なんだかうまくクッキーを認識していないようです。
|
26
22
|
|
27
23
|
ご存知の方いらっしゃいましたら、ぜひアドバイスをよろしくお願い致します。
|
28
24
|
|
@@ -184,9 +180,9 @@
|
|
184
180
|
|
185
181
|
"sessions": {
|
186
182
|
|
187
|
-
".read":
|
183
|
+
".read": false,
|
188
184
|
|
189
|
-
".write":
|
185
|
+
".write": false
|
190
186
|
|
191
187
|
}
|
192
188
|
|
3
書式の改善と修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -132,9 +132,7 @@
|
|
132
132
|
|
133
133
|
app.get('/test', (req, res) => {
|
134
134
|
|
135
|
-
|
135
|
+
res.send(`セッションの値: ${req.session.name}`);
|
136
|
-
|
137
|
-
res.send('test');
|
138
136
|
|
139
137
|
});
|
140
138
|
|
2
書式の改善
test
CHANGED
File without changes
|
test
CHANGED
@@ -4,7 +4,27 @@
|
|
4
4
|
|
5
5
|
サーバー側の処理(Cloud Functions)で、セッションを使いたいのですが、うまくいきません。
|
6
6
|
|
7
|
-
セッションに値を追加して
|
7
|
+
セッションに値を追加して取得しようとすると、undefined になります。
|
8
|
+
|
9
|
+
ただし、データベースには次のような感じで値が保存されています。
|
10
|
+
|
11
|
+
(セッションのキーをname、値をyamadaで追加した例)
|
12
|
+
|
13
|
+
sessions
|
14
|
+
|
15
|
+
--Ds-KX6DYOjGiaZ7qkmpH_O_JS1WQbJ8I
|
16
|
+
|
17
|
+
--expires: 1549045586962
|
18
|
+
|
19
|
+
--sess: "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"name\":\"yamada\"}"
|
20
|
+
|
21
|
+
--type: "connect-session"
|
22
|
+
|
23
|
+
けれども、ページをリロードすると、また別の新しいセッションができてしまいます。
|
24
|
+
|
25
|
+
なんだかうまくクッキーを認識していないようです。
|
26
|
+
|
27
|
+
ご存知の方いらっしゃいましたら、ぜひアドバイスをよろしくお願い致します。
|
8
28
|
|
9
29
|
開発環境はCloud9です。
|
10
30
|
|
@@ -92,9 +112,9 @@
|
|
92
112
|
|
93
113
|
secret: 'secret_key',
|
94
114
|
|
95
|
-
resave:
|
115
|
+
resave: false,
|
96
116
|
|
97
|
-
saveUninitialized:
|
117
|
+
saveUninitialized: false
|
98
118
|
|
99
119
|
}));
|
100
120
|
|
1
誤字
test
CHANGED
File without changes
|
test
CHANGED
@@ -106,7 +106,7 @@
|
|
106
106
|
|
107
107
|
req.session.name = 'yamada';
|
108
108
|
|
109
|
-
res.render('index');
|
109
|
+
res.render('index');
|
110
110
|
|
111
111
|
});
|
112
112
|
|
@@ -114,9 +114,7 @@
|
|
114
114
|
|
115
115
|
console.log('セッションの値:', req.session.name);
|
116
116
|
|
117
|
-
res.send('test');
|
117
|
+
res.send('test');
|
118
|
-
|
119
|
-
|
120
118
|
|
121
119
|
});
|
122
120
|
|