私は、バックエンドとしてAPIを提供するためにexpress
+ mongodb
+ redis
+ mongoose
をバックエンドとして使用します。ページがリロードされたときにフロントエンドでユーザーのログイン状態が失われる
そして、フロントエンドにreact
+ react-router
+ redux
を使用してください。
認証はsessionId
+ cookie
に基づいています。
フロントエンドの場合は、react-router
とonEnter
フックを使用して認証制御します。ユーザーが正常にログインすると、バックエンドのユーザー情報がreduxストアに保存されます。このように:
const auth = { username: 'novaline', isLogin: true};
これまでのところすべて問題ありません。
問題は:ユーザーがページをリロードすると、レビュックスストアにキャッシュされたデータが消去されます。ええ、私は知っている、還元店のライフサイクルがあります。
しかし、ユーザーが&にログインすると、ページをリロードすると、認証データがレデックスストアから消去されるため、フロントエンドはユーザー情報を失います。
ユーザー名は未定義で、onEnter
フックのため、login
ページにリダイレクトされます。
バックエンドの場合、session
はまだredis
です。
私はjwt
がこの問題を解決できることを知っています。
私の場合は。ユーザーがページをリロードすると、ユーザーのログイン状態を保持するにはどうすればよいですか?
P.S.私はcookie
httpOnly
とMax-Age
と設定しました。クライアントはcookie
を取得または設定できません。
__update:__
私はのlocalStorageにユーザー情報を保存しよう。ユーザがloginedときに、ページをリロードし、真の場合は、ユーザーのlocalStorageで情報かどうかは、私はこのような認証データをリセットする場合、私は確認してください。
const auth = {username: localStorage.getItem('username'), isLogin: true};
だから、私は実装するためにこれを使用することができます自動ログインし、home
ページにリダイレクトします。
しかし、私はそれが信頼できないと思います。ユーザーはlocalStorageを変更できます。したがって、ユーザーがlocalStorageをクリアした場合。ユーザー情報とログイン状態も表示されます。
この情報をローカルストレージに保存すると、永続性が維持されます。それを試した? –
@BoyWithSilverWingsええ。私は私の質問を更新する。返信ありがとう。 – novaline
ローカルストレージの変更は、最小の関心事でなければなりません。 これを確認してください。 https://stackoverflow.com/questions/11246947/can-localstorage-be-modified-by-a-client – keshavDulal