リデューサー初めての方へ。パスポート+クッキーを使用してユーザーを認証し、自分の状態がリフレッシュ
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
import {
LOGIN_USER_SUCCESS
} from '../actions/types';
const INITIAL_STATE = {
error: '',
message: '',
content: '',
authenticated: false,
authenticating: false,
username: '',
fullName: '',
password: '',
};
export default function(state = INITIAL_STATE, action) {
console.log('anything?');
switch (action.type) {
case LOGIN_USER_SUCCESS:
console.log(';', action.fullName);
console.log(';;', action);
console.log(state.fullName)
return {
...state,
fullName: action.fullName,
username: action.username,
password: action.password,
authenticating: false,
authenticated: true,
};
return state;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
import {
LOGIN_USER_SUCCESS,
} from './types';
import axios from 'axios';
import cookie from 'react-cookie';
import Cookies from 'universal-cookie';
const cookies = new Cookies();
const API_URL = 'http://localhost:3001/api';
export const loginUser = (username, password) => {
return function(dispatch) {
axios
.post(`${API_URL}/auth/login`, { username, password })
.then(response => {
cookies.set('token', response.data.token, { path: '/' });
cookies.set('user', response.data.user, { path: '/' });
console.log(cookies.get('user'));
console.log(username);
dispatch({
type: LOGIN_USER_SUCCESS,
fullName: response.data.user.fullName,
});
setTimeout(
function() {
//window.location.href = 'http://localhost:3000/auth/dashboard';
},
3000
);
});
};
};
私はどのように保つかに失わアプリを作成しますページからページへのリダイレクト時に状態が失われることはありませんか? window.location.hrefを実行すると、問題の原因と思われるページが更新されたようです。
私の状態ではisAuthenticatedブール値を変更しなければなりませんし、そうでなければ私のコンポーネントで真のリダイレクトを渡します。そうでなければ、自分のアクションクリエータではなくログインにリダイレクトしますか? localStorageの代わりにクッキーを使用することは必須ですか? – fj785
ログインからauthenitcatedコンテンツへの切り替えに関しては、あります。クッキー、ローカルストレージに関して、私はそれがReactに関連しているとは思わない。言い換えれば、あなたが何をしていても、それはあなたがセキュリティに取り組みたい、そして/または作業しているサイトが必要とするものです。 –