When I build MERN
stack app I use axios
withCredentials: true
. And it work well. After I use this next.js
but don't work In backend I use passport.js
, passport-local-mongoose
and express-session
for authentication user. It don't work next.js app but work react. If someone know error please write comment or answer:
axiosConfig file
import axios from 'axios';
const baseUrl = process.env.SERVER;
const app = axios.create({
baseURL: baseUrl,
withCredentials: true,
});
app.defaults.withCredentials = true;
app.interceptors.response.use(
(response) => (response),
(error) => (Promise.reject(error.response.data.err)),
);
app.interceptors.request.use((request) => request, (error) => Promise.reject(error));
export default app;
Auth functions:
export const getUser = async (ctx) => {
await app
.get('/users/auth')
.then((res) => {
const { data } = res;
console.log(data);
return { status: true, user: data };
})
.catch((error) => ({ status: false, user: null }));
};
export const login = async (username, password, setUser, setLoading, setError) => {
console.log(username, password);
await app.post('/users/login', { username, password })
.then((res) => {
console.log(res.data);
setUser(res.data);
window.location.reload();
}).catch((err) => {
if (err.response) setError(err.response.data.message);
else setError('Network error! Try again');
});
};