2016-10-03 3 views
13

मूल रूप से, मैं कुकी सेट करने के लिए निम्नलिखित AJAX का उपयोग करता हूं।प्रतिक्रिया कोड में कुकी सेट करने के लिए मैं कैसे कर सकता हूं?

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 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); 

कुकी टाइमलिमिट का विस्तार करने के लिए, कुकी के सत्र समय प्राप्त करने के लिए प्रतिक्रिया पक्ष में मुझे क्या लिखना चाहिए?

उत्तर

30

ऐसा लगता है कि कार्यक्षमता पहले react-cookie NPM पैकेज में मौजूद universal-cookie ले जाया गया है। universal-cookie repository से प्रासंगिक उदाहरण है:

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

बहुत अच्छा जवाब – LOTUSMS

7

मैं प्रतिक्रिया-कुकी पुस्तकालय का उपयोग कर प्रतिक्रिया में कुकीज़ सेट करता हूं, इसमें विकल्प हैं जिन्हें आप समाप्ति समय निर्धारित करने के लिए विकल्पों में पारित कर सकते हैं।

अपने मामले के लिए इसके उपयोग का एक उदाहरण बाहर 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}); 
}; 
+1

ऐसा प्रतीत होता है कि प्रतिक्रिया-कुकी पैकेज ने इस समाधान में उपयोग की गई एपीआई को अपडेट किया है (टूटा हुआ)। लिंक के लिए +1, और मैंने नीचे अद्यतन उत्तर पोस्ट किया है। – speckledcarp

2

एक बहुत ही सरल समाधान sfcookies पैकेज का उपयोग कर रहा है। तुम सिर्फ उदाहरण के लिए NPM का उपयोग कर इसे स्थापित किया है:

const cookie_key = 'namedOFCookie'; 

पर:

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

एक कुकी कुंजी बनाने: NPM sfcookies --save

तो फिर तुम फाइल पर आयात स्थापित आपका सबमिट फ़ंक्शन, आप इस पर डेटा को सहेजकर कुकी बनाते हैं:

bake_cookie(cookie_key, this.state.LALALA); 

यह सिर्फ

delete_cookie(cookie_key); 

करते हैं उन्हें नष्ट करने के लिए और इसे पढ़ने के लिए:

read_cookie(cookie_key) 

सरल और आसान उपयोग करने के लिए।

संबंधित मुद्दे

 संबंधित मुद्दे