2016-04-25 8 views
0

Reduxの状態がリフレッシュ後に消えます。私はグローバルuserオブジェクト内にuserTokenオブジェクトを保持していました。しかし、リフレッシュ後にセッションを維持する必要があるので、私はtokenを保存する場所がより良いと仮定します。Redux Keep Session

reduxでセッションを管理する従来の方法は何ですか?この場合、どこでtokenを保持する必要がありますか?

答えて

1

トークンは、ブラウザのローカルストレージに保存する必要があります。

logInSuccessアクションをディスパッチする前にトークンを追加してください。

また
function parseUser(response,dispatch){ 
    localStorage.setItem("YOUR-APP-NAME", response.token); 
    dispatch(logInSuccess(response.token)); 
} 

は、以前は自分のトークンを維持するためのlocalStorageを使用することを示唆した答えが、私はとのlocalStorageに対して助言するだろう

const initialState = { 
    ... 
    token: localStorage["YOUR-APP-NAME"], 
    ... 
}; 
3

あなた認証減速のご初期状態にトークンを追加することを忘れていけません信頼できる店。

重要なデータを格納するためにlocalStorageを不適切なものにするケースが複数あります。特に、スペースクォータがあり、一部のブラウザはプライベートブラウジングでそれを無効にします。

トークンはサーバーに記録された各要求に付随する必要があるため、実際にはあなたが望むのは単にcookieです。

+0

「ユーザー」レデューサーの中には、ユーザーに関連するすべての状態(電子メール、名前など)が保持されます。すべての情報をクッキーの内部に 'token'と一緒に格納するのは大丈夫ですか? –

+0

よく、クッキーよりもlocalStorageを選択する人はたくさんいます。http://stackoverflow.com/questions/3220660/local-storage-vs-cookiesまたはhttps://auth0.com/blog/2014/01をチェックしてください。/07/angularjs-authentication-with-cookies-vs-token/ – QoP

+0

@QoPこのリンクでは、500以上のアップボックスを含む受け入れられた回答には、次のような記述があります。「セッションCookieをクッキーとして残したいしかし。 " – Buzinas