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
기능?
, 당신은 @soutot 감사는 리스너처럼? 따라서 앱을 종료 할 때마다 인증 상태가 변경됩니까? 그런 다음 앱을 다시 열면 어떻게됩니까? 자동 로그인합니까? –
예, Firebase는 인증 사용자를 로컬에 저장합니다. 로그 아웃 외에도 앱 데이터를 제거하거나 삭제하면 앱을 열 때마다 인증 된 사용자로 인식됩니다. – soutot
고맙습니다. 마지막으로 한 가지 질문 : 사용자의 홈 페이지로 이동하면 헤더에 사용자의 이름이 표시됩니다. 즉, 사용자의 정보를'componentWillMount()'메소드에서 가져와야 함을 의미합니다.'const {currentUser} = firebase.auth()'현재 로그인 한 사용자의 정보를 얻으시겠습니까? 그렇다면 사용자의 데이터를 지속시키기 위해 redux-persist를 사용할 필요가 없습니다. –