Проблема
У меня проблемы с аутентификацией в firebase - после того, как пользователь впервые зарегистрировался, они проходят аутентификацию и для них создается экземпляр в базе данных.
Приложение загружает «Панель инструментов» (которая защищена аутентификацией HOC) и пользовательскую информацию в совершенстве.Тем не менее, как только я пытаюсь перемещаться по приложению с помощью «act-router », HOC вылетает из меня, поскольку в AuthState произошли очевидные изменения, и пользовательский объект теперь имеет значение null.
ЭТО ТОЛЬКО ПРОИСХОДИТВПЕРВЫЕ ПОЛЬЗОВАТЕЛЬ ПОДПИСЫВАЕТСЯ.В противном случае аутентификация стабильна во всех остальных случаях.
Я пытался: - Явный вход пользователя в систему после регистрации, но тот же результат происходит
Этоследующий вопрос похож на
Аутентификация Firebase - пользователь не вошел в систему после регистрации и перенаправления Firebase
HOC
export default function (ComposedComponent) {
class Authentication extends Component {
constructor() {
super();
this.unsubscribe = null;
}
componentDidMount() {
this.unsubscribe = firebase.auth().onAuthStateChanged(function(user){
if(!user) {
history.push("/signin")
}
})
}
componentWillUnmount() {
this.unsubscribe();
}
render() {
return ( <ComposedComponent {...this.props} /> )
}
}
return Authentication;
}
Базовая регистрацияДействие
export function SignUpUser(values) {
// Wrap inner log with function to give access to dispatch - redux thunk
return function(dispatch) {
// Create session
firebase.auth().setPersistence(firebase.auth.Auth.Persistence.SESSION)
// Successful Session Creation
.then(function(){
// Sign Up User
return firebase.auth().createUserWithEmailAndPassword(values.email, values.password)
// Successful SignUp Logic
.then(function(response){
// 1) Save uid to redux state for reads and writes
values.uid = response.user.uid
dispatch({ type: USER_UID, payload: values.uid })
dispatch({ type: USER_DETAILS, payload: response.user })
})
// Unsuccessful Sign Up
.catch(function(error){
dispatch({ type: DISPLAY_ERROR, payload: error })
})
})
// Unsuccessful Session Creation
.catch(function(error){
dispatch({ type: DISPLAY_ERROR, payload: error })
})
}
}
Кто-нибудь понимает, почему я не вошел в систему?
Находится ли объект аутентификации в каком-то промежуточном состоянии?