2017-04-10 4 views
2

私はReactのセッションクッキーに関する質問があります。セッションクッキーを使用する

は現在、これは私がユーザを認証する方法である:

export function loginUser({ email, password }) { 
    return function(dispatch) { 
     axios.post(`${API_URL}/users/authenticate`, { email, password }, { withCredentials: true }) 
      .then((response) => { 
       if (response.data.result_status == "success") { 
        localStorage.setItem("token", JSON.stringify(response.data.user)) 
         dispatch({ type: AUTHENTICATE_USER }); 
         browserHistory.push("/home"); 
        }) 
       } 
      }) 
      .catch(() => { 
       dispatch(authError('Incorrect Login Info')); 
      }); 
    } 
} 

私はURLにemailpasswordを送信します。 response.data.result_status == "success"の場合、ユーザー情報(名前や電子メールのようなもの)をlocalStorageトークンに設定し、別のlocalStorageアイテムをtrueに設定するAUTHENTICATE_USERを呼び出します。

私はlocalStorageを使用しているので、データをリロードするとデータが保持されます。認証されたlocalStorageがnullに設定されていない限り、私はシステムにとどまります。

ただし、Cookieのセッションが有効期限切れになっていないため、システムに長期間滞在したいと考えています。現在、私はローカルのストレージに設定したトークンに基づいてシステムに留まり、クッキーは保存しません。

バックエンドはJWTを使用せず、クッキーだけです。クッキーがまだ腋窩にあるのかどうかを確認する方法はありますか?

+0

あなたはXHRのレスポンスのクッキーをチェックすることはできません。リクエストが行われた前後にクッキーを比較することができます。 – elmeister

+0

@elmeister返信ありがとうございます。クッキーを "チェック"するにはどうすればいいですか? localStorageのトークンとして設定する必要がありますか? – lost9123193

+1

あなたはhttps://developer.mozilla.org/en-US/docs/Web/API/Document/cookieから始める方がよいと思います – elmeister

答えて

1

クッキーのセッションがまだアクティブであることを知っているのはAPIだけなので、この側ではクッキーのセッションがまだアクティブかどうかを確認する必要があります。セッションが終了したら、リクエストごとにレスポンスのステータスコードをチェックしてlocalStorageアイテムを削除できるように、もうログインしていないときは401 Unauthenticatedを受け取ると思います。

私はあなたのステータスコードをチェックするために応答interceptor from Axiosを使用します提案:

axios.interceptors.response.use(function (response) { 
    // Do something with response data 
    return response; 
    }, function (error) { 
    // Do something with response error 
    if (error.status === 401) { 
     // DELETE YOUR AUTHENTICATE_USER item from localStorage 
    } 
    return Promise.reject(error); 
}); 
+0

ああ、私は参照してください。だから、Axis GET広告POSTSが401エラーを返さないなら、クッキーがまだセッション中であることを意味しますか? – lost9123193

+0

それは正しいです。 –

+0

しかし、ユーザーがlocalStorageにユーザー名と電子メールを手動で入力すると、認証されますか? –

関連する問題