Подтвердить что ты не робот

Как сделать, чтобы установить cookie в код реакции?

Как правило, я использую следующий ajax для установки cookie.

function setCookieAjax(){
  $.ajax({
    url: `${Web_Servlet}/setCookie`,
    contentType: 'application/x-www-form-urlencoded;charset=utf-8',
    headers: { 'Access-Control-Allow-Origin': '*',
               'username': getCookie("username"),
              'session': getCookie("session")
    },
    type: 'GET',
    success: function(response){
      setCookie("username", response.name, 30);
      setCookie("session", response.session, 30);}
  })
}

function setCookie(cname, cvalue, minutes) {
    var d = new Date();
    d.setTime(d.getTime() + (minutes*60*1000));
    var expires = "expires="+ d.toUTCString();
    document.cookie = cname + "=" + cvalue + "; " + expires;
}

export const getUserName = (component) => {
    setCookieAjax()
 $.ajax({
    url: `${Web_Servlet}/displayHeaderUserName`,
    contentType: 'application/x-www-form-urlencoded;charset=utf-8',
    headers: { 'Access-Control-Allow-Origin': '*',
                'username': getCookie("username"),
                'session': getCookie("session")
            },
    type: 'GET',
    success: function(response){
        component.setState({
        usernameDisplay: response.message
        })
   }.bind(component)
 })
}

Теперь я хочу установить cookie, используя сервлет, добавляющий функцию cookie. Но я не знаю, как достичь своей цели.

Cookie loginCookie = new Cookie("user",user);  //setting cookie to expiry in 30 mins
        loginCookie.setMaxAge(30*60);
        loginCookie.setDomain("localhost:4480");
        loginCookie.setPath("/");

response.addCookie(loginCookie);

Чтобы продлить тайм-лимит cookie, что я должен писать на стороне реакции, чтобы получить время сеанса cookie?

4b9b3361

Ответ 1

Похоже, что функциональность, ранее представленная в пакете react-cookie npm, была перенесена на universal-cookie. Соответствующий пример из универсальный файл cookie теперь:

import Cookies from 'universal-cookie';
const cookies = new Cookies();
cookies.set('myCat', 'Pacman', { path: '/' });
console.log(cookies.get('myCat')); // Pacman

Ответ 2

Я устанавливаю файлы cookie в React с помощью библиотеки response-cookie, у него есть опции, которые вы можете передать в настройках, чтобы установить время истечения срока.

Отметьте here

Пример его использования для вашего случая:

import cookie from "react-cookie";

setCookie() => {
  let d = new Date();
  d.setTime(d.getTime() + (minutes*60*1000));

  cookie.set("onboarded", true, {path: "/", expires: d});
};

Ответ 3

Очень простое решение - использовать пакет sfcookies. Вам просто нужно установить его с помощью npm, например: npm установить sfcookies --save

Затем вы импортируете файл:

import { bake_cookie, read_cookie, delete_cookie } from 'sfcookies';

создать файл cookie:

const cookie_key = 'namedOFCookie';

в вашей функции отправки, вы создаете файл cookie, сохраняя данные на нем так:

bake_cookie(cookie_key, this.state.LALALA);

чтобы удалить его, просто выполните

delete_cookie(cookie_key);

и прочитать его:

read_cookie(cookie_key)

Простой и удобный.

Ответ 4

По умолчанию, когда вы извлекаете URL-адрес, React native устанавливает cookie.

Чтобы просмотреть файлы cookie и убедитесь, что вы можете использовать пакет https://www.npmjs.com/package/react-native-cookie. Я был очень доволен этим.

Конечно, Fetch делает это, когда он это делает

credentials: "include",// or "some-origin"

Ну, но как его использовать 😊

--- после установки этот пакет ----

для получения файлов cookie:

import Cookie from 'react-native-cookie';

Cookie.get('url').then((cookie) => {
   console.log(cookie);
});

для набора файлов cookie:

Cookie.set('url', 'name of cookies', 'value  of cookies');

только это 😊

Но если вы хотите немного, вы можете это сделать

1- как вложенный:

Cookie.set('url', 'name of cookies 1', 'value  of cookies 1')
        .then(() => {
            Cookie.set('url', 'name of cookies 2', 'value  of cookies 2')
            .then(() => {
                ...
            })
        })

2- назад

Cookie.set('url', 'name of cookies 1', 'value  of cookies 1');
Cookie.set('url', 'name of cookies 2', 'value  of cookies 2');
Cookie.set('url', 'name of cookies 3', 'value  of cookies 3');
....

Теперь, если вы хотите убедиться, что файлы cookie настроены, вы можете получить его снова, чтобы убедиться.

Cookie.get('url').then((cookie) => {
  console.log(cookie);
});