Closed UseMuse closed 4 years ago
This warn in AuthProvider. Такие пироги
Thank you for the notice)
If you make PR with the fix I will be happy, in another case, I will fix a bit later)
Жизнь вообще тяжелая штука.
помогите разобраться с работой хука useAuth. Я авторизовался
использую Route из вашего примера
const Router = () => {
const [logged] = useAuth();
return <BrowserRouter>
<Switch>
{!logged && <>
<Route path="/register" component={Register}/>
<Route path="/login" component={Login}/>
<Redirect to="/login"/>
</>}
{logged && <>
<Route path="/dashboard" component={Dashboard} exact/>
<Redirect to="/dashboard"/>
</>}
</Switch>
</BrowserRouter>;
};
Иду в localStorage и удаляю токен, пытаюсь перейти к dashboard который доступен только для авторизованного, и я успешно получаю доступ, хотя по факту, токена нет - что должно интерпретироваться пользователь не залогинен.
Разместив логи внутри isLoggedIn, я наблюдаю то, что privateToken не пустой, и равен тому значению которое я удалил руками из localStorage.
Как сделать так, чтобы это заработало?
Нужен метод получения токена прямиком из localStorage, каждый раз когда вызывается метод, сейчас же в коде у вас, присваивание privateToken равен значению из localStorage выполняется 1 раз, когда создаётся экземпляр createTokenProvider, все дальнейшие обращения к privateToken используют данные которые получены первоначально...может так это и задумывалось. Но мне увы не совсем подходит
Прошу прощения что не оформил в другом "вопросе"
Добавил PR
Иду в localStorage и удаляю токен, пытаюсь перейти к dashboard который доступен только для авторизованного, и я успешно получаю доступ, хотя по факту, токена нет - что должно интерпретироваться пользователь не залогинен.
Если ты получал ошибку без перезагрузки страницы, то все логично)
Нет, ошибок в консоли нет, я без токена в localStorage продолжаю получать доступ к приватной странице по скольку хук возвращает true = что значит что я залогинен, а залогинен я потому что данные о токене закешированы
Исправлено в версии 1.1.7 Если будут проблемы, можно переоткрыть issue или создать новое
The 'listener' function makes the dependencies of useEffect Hook change on every render. Move it inside the useEffect callback. Alternatively, wrap the 'listener' definition into its own useCallback() Hook react-hooks/exhaustive-deps