Здравствуйте! Подскажите как правильно сделать аутентификацию?
У меня есть вот такой код. В хуке
UseEffect вызывается
verifyAuthentication, который обращается на сервер и там проверяется есть ли такой токен. Если есть, то переменная
user не пустая, и соответственно вывожу что надо.
Но есть проблема,
verifyAuthentication выполняется с задержкой из-за чего выводится компонент
Authentication. тогда я сделал метод
setAuth, который вызывает сам себя до тех пор, пока не появится переменная
user (тоже неидеально). Вроде как работает, но возникает ситуация. Сначала грузится компонент
Authentication, а потом
Dashboard, и вроде бы ок, но часть js кода не грузится, например, кнопка, которая должна открыть модальное окно не сработает.
function App() {
const {verifyAuthentication} = useActions()
const [authStatus, setAuthStatus] = useState(false)
useEffect(() => {
if (localStorage.getItem('token')) {
verifyAuthentication()
setAuth(authStatus)
}
}, [])
const setAuth = (bool: boolean) => {
if (!bool) {
let status = store.getState().auth.authResponse?.user ? true : false
setTimeout(() => setAuth(status), 1000)
}
else {
setAuthStatus(true)
}
}
return authStatus ? <Dashboard/> : <Authentication/>
}
export default App;