Как сделать, чтобы установить 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?
Ответы
Ответ 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);
});