2017-03-03 2 views
0

Ich versuche nur mit Ajax in WordPress einzuloggen. Hier ist mein CodeWie kann man WordPress-Cookies speichern, so dass der Benutzer nur mit Javascript und AJAX eingeloggt wird, ohne ein Plugin?

var username = data.username; 
var password = data.password; 
var wp_login_url = "http://local_Ip/api/user/generate_auth_cookie/?username=" +username + "&password=" + password + "&insecure=cool"; 

$.ajax({ 
     url: wp_login_url, 
     type: "GET", 
     success: function (data, status) { 
      // if status = "okey" 
     console.log("Success!!"); 
     console.log(data); 
     console.log(status); 
     // write code here to store the cookie 
     // do other task once used is logged in. 
     } 
     }); 

Es funktioniert gut, und ich bin immer zu Antwort. Dies sind die Daten, die ich erhalte.

{

"status": "ok", 
    "cookie": "some_name|1489727386|JpJ5CP4tafjsvcmwKIgSwF3n0YcceHHp951RQ5pL66h|72f3c19d3012f907a2d9ca65c09d068f7f135bc9dd58910521f274e6156613eb", 
    "cookie_name": "wordpress_logged_in_ea481ff90802a841ac44175284812226", 
    "user": { 
    "id": 60, 
    "username": "some_name", 
    "nicename": "some_name", 
    "email": "9**********@something.org", 
    "url": "", 
    "registered": "2017-03-02 11:28:34", 
    "displayname": "some_name", 
    "firstname": "", 
    "lastname": "", 
    "nickname": "", 
    "description": "", 
    "capabilities": "", 
    "avatar": null 
    } 
} 

Ich möchte das Cookie in Browser speichern, mit Hilfe von Javascript (kein php), so dass Benutzer wird in Wordpress und führen Sie dann eine andere Javascript-Aufgabe wird protokolliert. Ich bin neu in diesem. Ich verstehe das nicht sehr gut.

+0

Ich würde PHP verwenden, wenn Sie JavaScript verwenden, um Anmeldesitzungen zu verarbeiten, die Sie einen Fallback zu irgendeiner Art von Server-Seitencode sowieso benötigen, ist Benutzer deaktiviert js –

+0

Ich weiß nicht wissen, PHP und keine Zeit zu haben lerne PHP. Ich bekomme den Keks. Alles, was ich brauche, ist den Cookie zu speichern. Das ist mein Verständnis davon, wie Login funktioniert. Markiere mich, wenn ich falsch bin. –

+0

Wie gesagt, es kann gemacht werden, aber es ist keine gute Methode, wenn der Benutzer js im Browser deaktiviert, wie wird das Login funktionieren. PHP oder eine andere serverseitige Sprache wird benötigt –

Antwort

0

Format ein Cookie zu setzen, ist

document.cookie="cookie_name=cookie_value; expires=proper date format(UTC); path=/"; 

So Cookie setzen Sie müssen eine Funktion

function setCookie(cookie_name,cookie_value,expiry_date){ 
     var date = new Date(); 
     date.setTime(date.getTime() + (expiry_date*24*60*60*1000)); 
     var expires = "expires="+ date.toUTCString(); 
     document.cookie = cookie_name+ "=" + cookie_value+ ";" + expires + ";path=/"; 
    } 

Dies stellt die Cookie definieren. Nun, um das Cookie benötigen Sie eine andere Funktion definieren

function getCookie(cookie_name) { 
     var name = cookie_name+ "="; 
     var decodedCookie = decodeURIComponent(document.cookie); 
     var ca = decodedCookie.split(';'); 
     for(var i = 0; i <ca.length; i++) { 
     var c = ca[i]; 
     while (c.charAt(0) == ' ') { 
      c = c.substring(1); 
     } 
     if (c.indexOf(name) == 0) { 
      return c.substring(name.length, c.length); 
     } 
    } 
    return ""; 
    } 

Jetzt können Sie die Set-Funktion in Ihrer Ajax-Erfolg-Funktion verwenden.

$.ajax({ 
    url: wp_login_url, 
    type: "GET", 
    success: function (data, status) { 
     // if status = "okey" 
    console.log("Success!!"); 
    console.log(data); 
    console.log(status); 
    // write code here to store the cookie 
    this.setCookie(data.cookie_name,data.cookie,expiryDate);//expiryDate is any date you want to get the cookie expired on. 
    // do other task once used is logged in. 
    } 
    }); 

Zum Löschen eines Cookies geben Sie das Ablaufdatum als letztes Datum an. Der Browser sieht das Cookie abgelaufen und löscht es. Hoffe, dass hilft. :)

+0

Das hat geholfen. Danke –

Verwandte Themen