У меня есть паспортная стратегия с экспресс-сервером на бэкэнде.Я настроил все паспортные стратегии и аутентификацию.Теперь мне нужно защитить некоторые из моих маршрутов.Я использую избыточность для хранения статуса, вошел ли пользователь в систему или нет.
Я попытался создать личный маршрут в соответствии с этим учебником .Но он попал в бесконечный цикл (бесконечный рендеринг компонента).
Следующий код успешно подключается к хранилищу резервных копий, отправляет действие и сервер также работает нормально.
Но, пожалуйста, подскажите, почемуя в бесконечной петле.
Моя защищенная функция выглядит следующим образом:
const login = {
type: "Login"
};
const logout = {
type: "Logout"
};
const AUTH =
process.env.NODE_ENV === "production"
? "https://birdiez.herokuapp.com/auth/check"
: "http://localhost:3090/auth/check";
const PrivateRoute = ({ component: Component, ...rest }) => (
<Route
{...rest}
render={props => {
console.log("calling api");
fetch(AUTH)
.then(response => {
return response.json();
})
.then(data => {
console.log("Promise resolved:", data);
data.msg === "OK" ? store.dispatch(login) : store.dispatch(login);
});
const { status } = store.getState();
return status === true ? (
<Component {...props} />
) : (
<Redirect
to={{
pathname: "/",
state: { from: props.location }
}}
/>
);
}}
/>
);
export default PrivateRoute;
Мой App.js выглядит следующим образом:
class App extends Component {
render() {
return (
<Router>
<Switch>
<Route exact path="/" component={Home} />
<PrivateRoute path="/dash" component={Dash} />
<Route exact path="*" component={Home} />
</Switch>
</Router>
);
}
}