質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Q&A

解決済

1回答

3240閲覧

cognitoのログイン情報がページのリロード時にリセットされる

FumiakiNakao

総合スコア180

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

0グッド

0クリップ

投稿2019/05/23 16:56

編集2019/05/23 17:11

AWS Cognitoを使って、ログインの仕組みを作成し、ログイン後getCurrentUser()を使ってログインユーザーを確認するところまでいけました.
ところが、ログイン後にページをリロードして再度getCurrentUser()を実行するとnullが返ってきました(つまりログインしていないことになっている)
getCurrentUser自体はlocalStorageからデータを読み出すと聞いていますので、これが正しければページのリロードは
関係のないはずですし、localStorageを確認したところデータはしっかり入ったままでしたので原因が思いつきません。

どなたか詳しい方がいれば教えていただけるとありがたいです。

参考ですが、私の使っているログインとログインユーザー取得のコードが以下です。

【ログイン】

js

1 async login({ dispatch }, payload) 2 { 3 4 const authenticationDetails = new AuthenticationDetails({ 5 Username: payload.username, 6 Password: payload.password 7 }); 8 9 const userPool = new CognitoUserPool({ 10 UserPoolId: USER_POOL_ID, 11 ClientId : CLIENT_ID 12 }); 13 14 const cognitoUser = new CognitoUser({ 15 Username: payload.username, 16 Pool : userPool 17 }); 18 19 await new Promise((resolve, reject) => { 20 21 cognitoUser.authenticateUser(authenticationDetails, { 22 onSuccess: res => resolve(res), 23 onFailure: err => reject(err) 24 }) 25 26 }).catch(() => { 27 throw new ApplicationError() 28 }); 29 }

【ユーザー取得】

js

1 async getCognitoSession({ dispatch }) 2 { 3 const userPool = new CognitoUserPool({ 4 UserPoolId: USER_POOL_ID, 5 ClientId : CLIENT_ID 6 }); 7 8 const cognitoUser = userPool.getCurrentUser() 9 10 11 //ページリロード後にここでnullが出て引っかかってしまう。。。 12 if(!cognitoUser){ 13 return null 14 } 15 16 const session = await new Promise((resolve, reject) => { 17 18 cognitoUser.getSession((err, session) => { 19 err ? reject(err.message) : resolve(session) 20 }) 21 22 }).catch(() => { 23 return null 24 }); 25 26 return session 27 },

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

リロード後getCurrentUserでデータが取れないとのことですが、リロード後onSuccess 内で(res => {console.log(res)})

このように書いたらコンソールにユーザーのログイン情報が書かれていたらしないですかね?

うろ覚えですけど、そんな仕様になっていたような気がします

投稿2019/05/24 00:10

koskacts

総合スコア145

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FumiakiNakao

2019/05/24 00:21

回答ありがとうございます > リロード後onSuccess 内で(res => {console.log(res)}) このように書いたらコンソールにユーザーのログイン情報が書かれていたらしないですかね? `onSuccess`というのは上記コードで言えば、`getCognitoSession`後半のPromiseの部分の話でしょうか? であれば、cognitoUserがnullなので、そもそもgetSessionは成功しないのではないかと思われます... また、`login`の方であればそもそもリロード時には走らないので、onSuccessのようなものは起こらないかと思われます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問