NIFCLOUD-mbaas / UserCommunity

ニフクラ mobile backend ユーザーコミュニティ
https://mbaas.nifcloud.com/
82 stars 18 forks source link

ページをまたいでのgetCurrentUser();について #1300

Open say4hati8 opened 2 years ago

say4hati8 commented 2 years ago

ページ構成を画像添付できるといいのですが…。 NCMBはページをまたいだユーザー認証を保持できないのでしょうか? SPA前提という仕様でしょうか?

index.html login.html

login.htmlで「ncmb.User.login」し、「 ncmb.User.getCurrentUser()」すると、objectが取れます。 しかし、ログイン後にlocation.hrefでindex.htmlに移動した際に、「 ncmb.User.getCurrentUser()」がnullとなります。

localstorageについては、login.htmlではユーザー情報が確認できますが、index.htmlでは確認できません。

よって、「NCMBはページをまたいだユーザー認証を保持できない」という勝手な切り分けになってしまったのですが、いかがでしょうか?

どうぞ宜しくお願い致します。

say4hati8 commented 2 years ago

補足です。 開発環境は、ローカルでVSCODEを使っています。htmlとjavascriptとCSSです。 はじめはmonacaIDEを使用していたのですが、動作が遅かったのでストレスでした。 ロジックをローカルで完成させ、IDEにあげて、少し調整しようと思いました。 このローカルで開発しているのも要因でしょうか?

htmlファイルはすべて同じ階層にあります。

例 windows10デスクトップに APPフォルダ └CSSフォルダ └JSフォルダ(api、clikey→app.js共通) └index.html └login.html └ほか

goofmint commented 2 years ago

「NCMBはページをまたいだユーザー認証を保持できない」

いいえ、可能です。

ローカルで開発している

特に問題ありません。そのまま進めてもらって大丈夫です。

ncmbは index.html / login.html 両方で初期化されているでしょうか?

say4hati8 commented 2 years ago

ありがとうございます! 可能なのですね。自分の書いたものをもう一度改めてみます。

・jsフォルダ └app.js→ncmb = new NCMB(appKey, cliKey);の記述 ・index.html→タグ内で「js/app.js」を読み込み ・abc.html→同じくタグ内でapp.jsを読み込み ・xyz.html→同じくタグ内でapp.jsを読み込み ・login.html→同じくタグ内でapp.jsを読み込み

です。

よって、どのページでも、ncmbを初期化としていると思っています。

goofmint commented 2 years ago

あまり関係ないかも知れませんが、HTMLファイルは直接ブラウザで開いているのでしょうか?つまり file://〜 といった形でしょうか? もしかすると、その場合はセキュリティ要件によってlocalStorageへの書き込みが塞がれている可能性があるのかなと。ローカルで開発する場合には Monaca CLI コマンド - Monaca Docs などを使って開発用のWebサーバーを立てる形で行ってください。

say4hati8 commented 2 years ago

エスパー的な読みありがとうございます。結論から申しますと、仰る通りでした。 ひとまずphpのビルトインサーバーで確認したところ、ページをまたいでユーザー情報が反映、取得できました。 ありがとうございます!!