2016-05-12 10 views
3

Ich muss JWT-Token in lokalen Speicher über Nodejs speichern, nachdem der Benutzer angemeldet ist (wurde autorisiert).Speichern in lokalen Speicher mit Nodejs

Nachdem ich überprüft habe, ob der Benutzer/Passwort in meinem Controller korrekt ist - ich speichere generierte Token im lokalen Speicher. So wie es aussieht, kann ich kein Fenster referenzieren, da es nicht existiert.

ReferenceError: window is not defined 

Dies ist, wie ich derzeit versuche, es zu tun.

... 
     payload = { 
     sub: user.email, 
     role: user.role 
     }; 

     token = jwt.sign(payload, jwtSecretKey, {expiresIn: '60m'}); 

     window.localStorage.setItem('token', token); 

     res.status(200).render('index' , { 
     user: user, 
     token: token 
     }); 
... 
+3

Wissen Sie, was der Unterschied zwischen einem Client und einem Server ist? – Amit

+0

Ja, ich tue ... – Paran0a

+0

Also ... Warum versuchst du Client-Sachen auf dem Server zu tun? – Amit

Antwort

1

Wenn Sie HTML 5 local bedeuten, dann ist es nicht so eine Sache, da node.js eine serverseitige Technologie. HTML 5 ist local eine Client-Seite Funktion unterstützt

How to access localStorage in node.js? siehe

+0

Ja, ich spreche über diesen Speicher. Ich habe einige Tutorials gesehen, in denen Leute empfehlen, generierte Token in Cookies oder lokalen Speicher zu speichern. Also, wenn ich es vom Knoten speichern möchte, sollte ich Cookies verwenden? – Paran0a

+0

Ja kann Cookies für die gleichen –

+0

Sie können Cookies oder eine JSON-Antwort verwenden. –

3

Sie sollten das Token vom Server (läuft auf node.js) an den Client (Browser), von dem aus können Referenz hat eine window Objekt senden Sie Ihre JavaScript-Code Node.js hat keine window zum Referenzieren. Indem Sie auf Node.js-Code verweisen, erhalten Sie einen undefined Fehler, den Sie festgestellt haben.

Einfach in einen Cookie einfügen und senden, oder senden Sie es über eine JSON-Antwort. Dann auf dem Client-Browser speichern Sie es in window.localStorage.

Folgendes ist der Beispielcode für den letzteren Weg; über eine Antwort zu senden:

// Server-Side Code 
// say app is your app server on node.js 
// this is a url handler on your server-side code 
// you just have sent your user credentials from a browser 
// typically via form in the body of your http request 
app.post('/auth', function (req, res) { 
    // you may have here some jwt token creation things 
    // ... 
    // and send it as your response to the client (probably a web browser) .. 
    // with your prefrred name as the key, say 'my_token', .. 
    // where you will save it to localStorage (ie. window.localStorage) 
    res.json({my_token: 'asdfgh-anything-jw-token-qwerty'}) 
}) 

// Client-Side Code (may be a web browser) 
// You have jsut sent a request to the server with user credentials for authentication in the request body 
// in the request body may be a window.FormData object or a json etc. 
http.post('auth', userCredentials) 
    // probably the request mechanism you make http requests asynchronously, a library in most cases, .. 
    // will return a Promise, and you will have a similar chain ad signature from now below 
    .then(response => { 
    response.json() 
     .then(responseJson => { 
     // set localStorage with your preferred name, say 'my_token', and the value sent by server 
     window.localStorage.setItem('my_token', responseJson.my_token) 
     // you may also want to redirect after you have saved localStorage 
     // window.location.assign("http://www.example.org") 
     }) 
    }) 
+0

Hallo können Sie mir ein Beispiel geben, wie man es über JSON Antwort – Kannan

+0

hier senden verwenden Sie diese [Geige als Beispiel] (https://jsfiddle.net/n80mo7bc/), und Sie können immer zurück fragen –

+0

Hallo bro ich dachte, dass vor dem Dank für diese Hilfe aber kämpfe um die Seite umleiten können Sie mir dabei helfen? – Kannan

0

Im Client-Aufruf/login Objekt Verwendung xmlhttpresponse, dann fügen Sie einen Ereignis-Listener für ‚Last‘. Dies gibt dem Client das responseObject, wo Sie das Token hinzugefügt haben. Dann in den Event Listener setzen Sie Ihre localStorage-Code

Verwandte Themen