#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, мы этого не делаем