Zugriff auf session-Variablen sailsjs anzeigen
Ich bin ganz neu auf sailsjs und nodejs. Ich bin versucht, erstellen Sie eine Seite Authentifizierung, wobei sobald ein Benutzer authentifiziert ist, den ich einstellen will
req.session.user = user.id
req.session.authenticated = true
Ich dann zugreifen zu können, müssen diese Werte innerhalb meiner main-layout.ejs-Datei. Ich habe so getan, mithilfe
res.locals.user = _.clone( req.session.user )
Allerdings ist mir aufgefallen, dass diese clone-Methode aufgerufen werden, in der jede Funktion von jedem controller so, dass ich mich in der Lage, den Zugriff auf die Benutzer in den Ansichten. Gibt es eine bessere Möglichkeit für den Zugriff auf session-Variablen sailsjs globbaly, ohne zu Klonen, die erf.Sitzung in jedem controller. Ein Beispiel von dem, was ich Tue, kann hier gefunden werden:
Wie Sie sehen können, habe ich aufgerufen, die clone-Methode am Anfang der verschiedenen Funktionen innerhalb des Reglers.
- Wenn die Benutzer-id zugewiesen wurde
req.session.user
können Sie auf eine variable namensuser
in der view-Datei und rufen Sieres.view({user: req.session.user})
in der controller-action. - Danke für die Antwort. Wie bereits in meinem post, das ist, was ich nicht tun wollen. Da die Benutzer-session-Daten werden benötigt, um den Zugriff innerhalb layout.ejs-Datei, die ich nicht wollen, übergeben Sie die Benutzer-Informationen aus, in jeder controller-action zur Ansicht. Gibt es eine Möglichkeit, den Zugriff auf die session-details Global, oder um Werte, die aus zugegriffen werden kann, innerhalb einer Ansicht, ohne explizit festgelegt wird, auf jede controller-Aktion?
- Sie definieren eine benutzerdefinierte middleware um dies zu erreichen. Für details, besuchen Sie das link
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
req
Objekt ist verfügbar in den Ansichten standardmäßig, es sei denn, Sie überschreibenres.locals
komplett. So können Sie den Zugriff auf eine session-variable in Ihren anzeigen mit<%=req.session.user%>
(wenn Sie EJS). Sie nicht haben, um es zu kopieren ausdrücklich in Ihrer einheimischen.<% %>
- tags (ohne die=
). Siehe die EJS-Referenz für mehr info.für jemand mit
passport.js
Sitzung des Benutzers gespeichert ist im innerenreq.session.passport.user
- und Sie können auch direkt aus der AnsichtHabe ich schließlich beschlossen zu gehen mit einer Lösung hier als ich fand, dass dies die sauberste Lösung.
Habe ich eine config-Datei namens userdata.config, in der ich den folgenden code:
Bin ich dann Zugriff auf diesen in der Steuerung wie folgt:
Dies ist dann steht in der Ansicht wie folgt:
req.session
? Denn ich bin mit JWT-Authentifizierung, so dass ich keine session-Speicherung. In jede Anfrage, die ich erhalten das token und in der payload-es hat die Benutzer-ID wie kann ich weltweit aufgerufen, info für jede Anforderung?