Внутренняя ошибка 500 и неавторизованная ошибка 401
Я работаю с Django и NextJS, я продолжаю получать 2 ошибки, когда я пытаюсь войти в систему:
- Из моего файла AuthContext.js "500 (Внутренняя ошибка сервера)"
- Из моего файла UseApi.js "401 (Unauthorized)" всякий раз, когда я пытаюсь войти в систему, он выбрасывает эти две ошибки я добавил заголовок авторизации, но все равно получаю ту же ошибку
Вот как структурирован каждый файл: AuthContext.js
import { createContext, useState, useEffect } from "react";
import useSWR from "swr";
import { httpWeb } from "../services/http";
import { usePostHog } from "posthog-js/react";
export const AuthContext = createContext();
export default function AuthContextProvider (props) {
const [token, setToken] = useState(null);
useEffect(() => {
// This code runs only on the client side
const storedToken = localStorage.getItem('token');
console.log("Token for request:", storedToken);
setToken(storedToken);
}, []);
const posthog = usePostHog()
const [ isLoading, setLoading ] = useState(true)
const [ isAuthenticated, setAuthenticated ] = useState(false)
const [ user, setUser ] = useState(null)
const {
data: user_data,
error: user_err,
mutate: refreshUser
} = useSWR('/api/auth/user', url => httpWeb.get(url, {
headers: {
'Authorization': `Bearer ${token}`
}
}).then(res => res.data, {
errorRetryCount: 0,
refreshInterval: 0,
shouldRetryOnError: false
}))
const signOut = () => {
httpWeb.post('/api/auth/logout')
.then(() => {
setAuthenticated(false)
setUser(null)
setLoading(false)
posthog.reset()
})
.catch(err => {})
}
useEffect(() => {
if (user_data) {
setUser(user_data.data)
setAuthenticated(true);
setLoading(false)
}
if (user_err) {
setAuthenticated(false);
setUser(null)
setLoading(false)
}
}, [user_data, user_err])
useEffect(() => {
if (user) {
posthog?.identify(
user?.id,
{
email: user?.email,
name: user?.full_name,
is_staff: user?.is_staff,
is_lecturer: user?.is_lecturer,
is_student: user?.is_student,
}
)
}
}, [posthog, user])
return (
<AuthContext.Provider value={{
isAuthenticated,
setAuthenticated,
user,
setUser,
isLoading,
setLoading,
signOut,
refreshUser
}}>
{props.children}
</AuthContext.Provider>
)
}
Вот структура моего файла UseApi.js:
import useSWR from "swr"
import { http } from "./http"
const fetcher = async (url, params={}) => {
const token = localStorage.getItem('token'); // Retrieve the token from localStorage
const headers = {
'Authorization': `Bearer ${token}`, // Set the Authorization header with the token
...params.headers // Include any other headers passed in params
};
return await http.get(url, { ...params, headers, withCredentials: true }).then(res => res.data.data);
}
const getAPI = url => {
const { data, error, mutate } = useSWR(url, fetcher)
return {
data,
isLoading: !error && !data,
isError: error,
mutate
}
}
export { getAPI }
Мне очень нужна помощь, пожалуйста.