Получить cookie с реакцией - PullRequest
0 голосов
/ 30 июня 2018

Мне нужно знать, подключен ли мой пользователь или нет. Для этого я хочу прочитать файлы cookie, которые я установил на стороне сервера с помощью express-session:

app.use(session({
    secret: 'crypted key',
    resave: false,
    saveUninitialized: true,
    cookie: { secure: false } // Put true if https
  }))

app.post('/connect_user', (req, res) => {
    req.session.cookie.username = req.body.username
    findUserData('username', req.body.username, req, (userData) => {
        req.session.cookie.id = userData.id
        req.session.cookie.username = userData.username
        res.redirect('/profil')
    })
})

Я пытался использовать реагирующий cookie, но он не работает, однако я копирую / вставляю документ npm реагирующий cookie:

import React from 'react';
import Landing from './Landing';
import Home from './Home';
import Profil from './Profil';
import {BrowserRouter as Router, Route} from 'react-router-dom'
import { instanceOf } from 'prop-types';
import { Cookies } from 'react-cookie';


class App extends React.Component {
    static propTypes = {
        cookies: instanceOf(Cookies).isRequired
      };
     
      constructor(props) {
        super(props);
     
        const { cookies } = props;
        this.state = {
          username: cookies.get('username')
        };
      }
    render() {
        console.log(this.state.name) 
        let homePage = (!this.state.username) ? <Landing/> : <Home/>
        return (
            <Router>
                <div>
                    <Route exact path='/' component={homePage}></Route>
                    <Route path='/profil' component={Profil}></Route>
                </div>
            </Router>
        )
    }
}

export default App;

Кто-нибудь знает, почему это не работает? Это странно, потому что document.cookie показывает хороший результат, но я не знаю, как с этим справиться: PHPSESSID = 0nv9ic8h7pv2b63lu4v7eg3mop; идентификатор_пользователь = 21; имя пользователя = Ugo; SL_G_WPT_TO = Fr; SL_GWPT_Show_Hide_tmp = не определено; SL_wptGlobTipTmp = не определено

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 30 июня 2018

Вы можете использовать пакет js-cookie и установить его с помощью команды npm install js-cookie --save.

import React from 'react';
import Cookies from 'js-cookie';

class App extends React.Component {
     this.state = {
        username: Cookies.get('username')
     }

//  more code....
}  

Документация: https://github.com/js-cookie/js-cookie

NPM: https://www.npmjs.com/package/js-cookie

0 голосов
/ 30 июня 2018

Я бы порекомендовал использовать universal-cookies, поскольку он более прост в использовании и, кроме того, это не только библиотека реакции.

import React from 'react';
// other imports...
import Cookies from 'universal-cookie';

const cookies = new Cookies();

class App extends React.Component {
     this.state = {
        username: cookies.get('username')
     }

//  more code....   

источник: https://www.npmjs.com/package/universal-cookie

...