2017-09-08 1 views
0

여기까지 필자는 redux를 사용하여 전역으로 로그인 상태를 유지합니다. 내 로그인 화면에서, 나는 ...과 같이에서 사용자가 로그인하는 행동 작성자를 사용하고 사용자가 로그인했는지 확인하려면 firebase를 사용하여 네이티브로 반응합니까?

// In LoginScreen file 
    onLogin =() => { 
     this.props.accountLogin({ email, password }); 
    } 

그리고 행동이 파일에

, accountLogin는 다음과 같이 정의된다 : 감속기 파일에서

// In auth_action file 
    export const accountLogin = ({ email, password }) => { 
     firebase.auth().signInWithEmailAndPassword(email, password) 
     .then(user => { 
      dispatch({ type: LOGIN_SUCCESS, payload: user })}); 
     }); 
    }; 

그런 다음, 경우 LOGIN_SUCCESS

// In auth_reducer file 
    const INITIAL_STATE = { 
     // ... Other stuff 
     user: null 
    }; 
    export default function (state = INITIAL_STATE, action) { 
     // ... Other cases 
     // Login Successful case 
     case LOGIN_SUCCESS: 
     return { ...state, user: action.payload }; 
     // After this return statement, I now have user's profile info 
    }; 

그래서 제 질문은, 내가 그 다음에 사용자가 응용 프로그램을 엽니 있도록 사용자의 프로필 정보를 지속 어떻게, 그들은 다시 로그인을하지 않아도됩니다 ...과 같이 처리? 나는 몇 가지 조사를 해봤이 내가 가진 무엇 :
// Use autoRehydrate and persistStore in 'redux-persist' 
    // In store file 
    import { createStore, compose, applyMiddleware } from 'redux'; 
    import thunk from 'redux-thunk'; 
    import { autoRehydrate, persistStore } from 'redux-persist'; 
    import { AsyncStorage } from 'react-native'; 
    import reducers from '../reducers'; 

    const store = createStore(
     reducers, 
     {}, 
     compose(
     applyMiddleware(thunk), 
     autoRehydrate() 
    ) 
    ); 

    persistStore(store, { storage: AsyncStorage, whitelist: ['auth'] }); 

    export default store; 

그리고 물론

, 내 auth_reducer 파일 REHYDRATE 경우를 처리했다. 하지만 사용자가 앱을 다시 열면 마지막으로 사용자가 앱을 사용했을 때의 사용자 정보가 있습니다.이 정보를 사용하여 firebase 데이터베이스에서 내 데이터를 계속 수정하려면 어떻게해야합니까?

예를 들어 사용자가 앱을 다시 열고 이름을 변경하려면 firebase가 승인 된 사용자임을 어떻게 알 수 있습니까? 이 쓰는 방법 changeName 기능?

답변

2

이 방법으로 도움이됩니다.

firebase.auth().onAuthStateChanged((user) => { 
     if (user) { 
     console.log('user logged') 
     } 
    }); 

더 많은 정보를 원하시면 여기 componentWillMount이 설정 : https://firebase.google.com/docs/auth/

+0

, 당신은 @soutot 감사는 리스너처럼? 따라서 앱을 종료 할 때마다 인증 상태가 변경됩니까? 그런 다음 앱을 다시 열면 어떻게됩니까? 자동 로그인합니까? –

+1

예, Firebase는 인증 사용자를 로컬에 저장합니다. 로그 아웃 외에도 앱 데이터를 제거하거나 삭제하면 앱을 열 때마다 인증 된 사용자로 인식됩니다. – soutot

+0

고맙습니다. 마지막으로 한 가지 질문 : 사용자의 홈 페이지로 이동하면 헤더에 사용자의 이름이 표시됩니다. 즉, 사용자의 정보를'componentWillMount()'메소드에서 가져와야 함을 의미합니다.'const {currentUser} = firebase.auth()'현재 로그인 한 사용자의 정보를 얻으시겠습니까? 그렇다면 사용자의 데이터를 지속시키기 위해 redux-persist를 사용할 필요가 없습니다. –

관련 문제