В настоящее время я разрабатываю приложение, использующее Firebase на серверной части. Я использую рецепт крючка useAuth от useHooks.com. Мне удалось сделать вызов axios в хуке useAuth, чтобы пользователь вошел в систему, но чтобы избежать технической задолженности по мере расширения проекта, мне нужно управлять аутентификацией пользователей через Redux, если это действительно лучший способ сделать это. Это.
Мой магазин в настоящее время выглядит как
import { createStore, applyMiddleware } from 'redux'
import {firestoreReducer} from 'redux-firestore'
import thunk from 'redux-thunk'
import {combineReducers} from 'redux'
import authReducer from './reducers/auth.reducer'
import {firebaseReducer} from 'react-redux-firebase'
const rootReducer = combineReducers({
auth: authReducer,
firestore: firestoreReducer,
firebase: firebaseReducer
})
const storeRedux = createStore(rootReducer,applyMiddleware(thunk))
export default storeRedux
Мой файл действий
export const doLogin = (email, password) => {
return dispatch => {
axios
.post(api + "/auth", {
email: email,
password: password
})
.then(response => {
dispatch({
type: AUTH_LOGIN,
email: response.email
});
})
.catch(error => {
console.log("There is no user with the given username and password");
//alert("Username does not exist");
});
};
};
and my reducer.
const authReducer = (state = initState, action) => {
switch (action.type) {
case "AUTH_LOGIN":
console.log("login error");
return {
...state,
authError: "Login failed"
};
case "LOGIN_SUCCESS":
console.log("login success");
return {
authError: null
};
default:
return state;
}
};
экспорт по умолчанию authReducer;
Я не уверен, что лучшеПрактика, чтобы правильно проверить аутентификацию пользователя, я использую пользовательский API, который делает вызов axios.