Я пытаюсь поместить информацию об аутентификации в хранилище redux, чтобы заголовок мог подключиться и получить информацию. Я использую google oauth с паспортом. js.
//this is controller
exports.currentUser = (req, res) => {
res.send(req.user);
};
//this is the route
const authCtrl = require("../controllers/authCtrl");
const router = require("express").Router();
router.get("/current_user", authCtrl.currentUser);
вот как я настроил маршрутизатор для express
app.use("/auth", require("./routes/authRoutes"));
вот редуктор аутентификации:
import { FETCH_USER } from "../actions/types";
const INITIAL_STATE = { _id: null, googleId: null, displayName: "" };
export default (state = INITIAL_STATE, action) => {
switch (action.type) {
case FETCH_USER:
return action.payload;
default:
return state;
}
};
это действие для получения текущего пользователя:
import axios from "axios";
const axiosInstance = axios.create({
baseURL: "http://localhost:3001",
timeout: 3000,
});
import { FETCH_USER, FETCH_BLOGS, FETCH_BLOG } from "./types";
export const fetchUser = () => async (dispatch, getState, api) => {
try {
const res = await api.get("/auth/current_user");
dispatch({ type: FETCH_USER, payload: res.data });
} catch (e) {
console.log(e.message);
}
};
это хранилище на стороне клиента:
import thunk from "redux-thunk";
import axios from "axios";
const axiosInstance = axios.create({
baseURL: "http://localhost:3001",
});
//we are passing axiosInstance to all action creators
const store = createStore(
reducers,
window.INITIAL_STATE,
applyMiddleware(thunk.withExtraArgument(axiosInstance))
);
пока все хорошо. но проблема заключается в создании хранилища на стороне сервера: я сделал это, но не работал:
import { createStore, applyMiddleware } from "redux";
import thunk from "redux-thunk";
import reducers from "../client/reducers";
export default (req) => {
const store = createStore(
reducers,
{},
applyMiddleware(thunk)
);
console.log("store from servre", store);
return store;
};
в этом случае редуктор не возвращает состояние. Я не мог разобраться в проблеме весь день. надеюсь, soneone ответит