teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

書式の改善

2019/02/03 23:45

投稿

退会済みユーザー
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

書式の改善

2019/02/03 23:45

投稿

退会済みユーザー
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": "false",
92
+ ".read": false,
95
- ".write": "false"
93
+ ".write": false
96
94
  }
97
95
  }
98
96
  }

3

書式の改善と修正

2019/02/02 21:02

投稿

退会済みユーザー
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
- console.log('セッションの値:', req.session.name);
68
+ res.send(`セッションの値: ${req.session.name}`);
69
- res.send('test');
70
69
  });
71
70
 
72
71
  exports.app = functions.https.onRequest(app);

2

書式の改善

2019/02/01 19:41

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,17 @@
1
1
  ### GoogleのFirebaseについての質問
2
2
 
3
3
  サーバー側の処理(Cloud Functions)で、セッションを使いたいのですが、うまくいきません。
4
- セッションに値を追加してundefined になります。
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: true,
58
+ resave: false,
49
- saveUninitialized: true
59
+ saveUninitialized: false
50
60
  }));
51
61
 
52
62
  // routing

1

誤字

2019/02/01 14:12

投稿

退会済みユーザー
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);