универсальный-cookie создает частные маршруты

#node.js #reactjs #cookies

#node.js #reactjs #файлы cookie

Вопрос:

Итак, у меня есть мое приложение

 import Header from './core/Header'; 
import Home from './core/pages/Home'; 
import MaterialTableDemo from './core/pages/Dashboard';
import BuildAd from './core/pages/BuildAd';
import Cookies from 'universal-cookie';
function App() {
  return (
    <MuiPickersUtilsProvider utils={DateFnsUtils}>
    <Router>
        <ThemeProvider theme={theme}>
          
        <Switch>
          
          <Route exact path="/" component={Home}/>  
          <Container disableGutters={true} maxWidth="xl">
       
          <Header/>    
          <Route exact path="/inde" component={Home}/>
          <Route exact path="/dashboard" component={MaterialTableDemo} />
          <Route exact path="/build-ad" component={BuildAd} />
          </Container>

        </Switch>
       
        </ThemeProvider>
    </Router>
    </MuiPickersUtilsProvider>  
  );
}
  

Я хочу создать следующие маршруты (для доступа к ним должен быть файл cookie)

           <Route exact path="/dashboard" component={MaterialTableDemo} />
          <Route exact path="/build-ad" component={BuildAd} />
  

с комментарием ниже. Я вроде бы понял, но проблема в том, как мне проверить cookie в этом const? Я пытался.

 const cookiea = cookies.get('access_key');

const fakeAuth = {
  if(cookiea)
    isAuthenticated: true,
  
  authenticate(cb) {
    fakeAuth.isAuthenticated = true;
    setTimeout(cb, 100); // fake async
  },
  signout(cb) {
    fakeAuth.isAuthenticated = false;
    setTimeout(cb, 100);
  }
};
  

но это приводит к ошибке

  Parsing error: Unexpected token, expected "{"

  69 | const fakeAuth = {
  70 |   if(cookiea)
> 71 |     isAuthenticated: true,
     |     ^
  72 |   
  73 |   authenticate(cb) {
  74 |     fakeAuth.isAuthenticated = true;
  

Комментарии:

1. Проверьте reactrouter.com/web/example/auth-workflow для частных маршрутов.

2. @AjeetShah Спасибо, это довольно интересно, я надеялся, что у Route будет встроенная функция, которая позволяет ему проверять, существуют ли файлы cookie

3. @AjeetShah Спасибо, я не могу понять, как я получаю постоянный fakeAuth = { IsAuthenticated: false, аутентификация (cb) { fakeAuth.IsAuthenticated = true; setTimeout(cb, 100); // поддельная асинхронность}, выход (cb) { fakeAuth.IsAuthenticated = false; setTimeout(cb,100); } }; для проверки cookies.get(«access_key»)

4. Вы можете игнорировать fakeAuth и просто создать функцию isAuthenticated , которая возвращает true , когда пользователь входит в систему и false в противном случае. «Как узнать, вошел ли пользователь в систему или нет?» зависит от того, как вы планируете реализовать «Аутентификацию» (cookie или localstorage и т. Д.).

5. @AjeetShah итак, скажем, на компьютере есть файл cookie — мы отправляем этот файл cookie на наш сервер для проверки, если true, мы вводим, если не true, мы этого не делаем