Grundsätzlich habe ich eine Login-/Registrierungs-Zielseite meiner App. Nachdem ein Benutzer sich angemeldet oder registriert hat, möchte er nicht mehr auf diese Route zugreifen können. Ich bin mir nicht sicher, wie ich das mit Hapi.js erreichen kann. Die Anmeldeseite verwendet keine Authentifizierungsstrategien, daher hat sie keine Ahnung, ob ein Benutzer angemeldet ist oder nicht.Login-Route deaktivieren, wenn ein Benutzer bei Hapi.js angemeldet ist
Antwort
Der Ansatz, den ich normalerweise dafür verwende, ist nicht die Route per se zu deaktivieren, sondern eingeloggte Benutzer von der Login-Route abzulenken.
Wie Sie richtig angeben, weiß Ihre Login-Route derzeit nicht, ob ein Benutzer angemeldet ist, wenn keine Authentifizierungsstrategie konfiguriert ist. Die Lösung ist hinzufügen eine Auth-Strategie für die Login-Route, aber mit der versuchen Modus. Dies bedeutet, dass der Handler ausgeführt wird, unabhängig davon, ob Auth erfolgreich war. Der Trick ist, dass Sie dann überprüfen können, ob der Benutzer authentifiziert ist (indem Sie den Wert request.auth.isAuthenticated
überprüfen) oder nicht und entsprechend reagieren.
So könnte Ihre Route wie folgt aussehen:
server.route({
config: {
auth: {
strategy: 'session',
mode: 'try'
}
},
method: 'GET',
path: '/login',
handler: function (request, reply) {
if (request.auth.isAuthenticated) {
return reply.redirect('/'); // user is logged-in send 'em away
}
return reply.view('login'); // do the login thing
}
});
Ein anderer Ansatz mit dem gleichen Ergebnis ist Ihre Auth-Strategie setzen auf versuchen Modus als Standard für alle Routen:
server.auth.strategy('session', 'cookie', 'try', {
password: 'password-that-is-longer-than-32-chars',
isSecure: true
});
Beachten Sie, dass das dritte Argument try
. Bei dieser Vorgehensweise müssen Sie der Route selbst keine auth-Konfiguration hinzufügen, da diese Strategie standardmäßig versucht wird. Nach dem server.auth.strategy
docs:
mode
- wenn sie wahr ist, wird die Regelung automatisch als eine erforderliche Strategie zu jeder Strecke ohne Auth Config zugewiesen. Kann nur einer einzelnen Serverstrategie zugewiesen werden. Der Wert muss wahr sein (entspricht dem Wert "erforderlich") oder ein gültiger Authentifizierungsmodus ("erforderlich", "optional", "versuchen"). Der Standardwert ist false.
Es gibt weitere Informationen über Modi in der Authentication tutorial auf der Hapi-Site.
- 1. wie AutoFill Formulareinträge wenn Benutzer angemeldet ist?
- 2. Benutzer umleiten, wenn nicht angemeldet
- 3. überprüfen, ob ein Benutzer bereits angemeldet ist?
- 4. ReturnUrl verursacht Fehler, wenn Benutzer bereits angemeldet ist
- 5. AngularJS - nav Elemente anzeigen/verbergen, wenn der Benutzer angemeldet ist
- 6. PHP Redirect Benutzer, wenn nicht angemeldet
- 7. Indexseite umleiten, wenn der Benutzer angemeldet ist AngularJS
- 8. Test Wenn ein PC über ein Netzwerk angemeldet ist
- 9. ViewController wird geändert, wenn der Benutzer Facebook ist Angemeldet
- 10. Umleiten zur Anmeldeseite, wenn der Benutzer nicht angemeldet ist
- 11. So sichern Sie Webseiten, wenn der Benutzer nicht angemeldet ist
- 12. Jsf Sitzung Timeout-Behandlung, wenn Benutzer nicht angemeldet ist
- 13. Wie kann ich feststellen, ob ein Benutzer angemeldet ist?
- 14. Ermitteln, ob der Benutzer angemeldet ist
- 15. Backendless überprüfen, ob Benutzer angemeldet ist
- 16. Ist der Benutzer angemeldet? (Restful-Authentifizierung)
- 17. Überprüfen, ob sich ein Benutzer angemeldet hat
- 18. angularjs + ui-router: Redirect auf Login-Seite, wenn Benutzer nicht bei jeder Statusänderung angemeldet ist
- 19. Firebase-Benutzer bereits angemeldet
- 20. Ermitteln, ob ein Internetnutzer gerade bei Google angemeldet ist?
- 21. Benutzer bleiben angemeldet
- 22. Überprüfen Sie, ob der Benutzer angemeldet ist
- 23. Concrete5 5.6.3.4 Benutzer ist als falscher Benutzer angemeldet
- 24. (Nativescript/Angular2) Benutzer angemeldet bleiben
- 25. Wie erkennen Sie, wenn ein Benutzer mit .NET (C#) im System angemeldet ist?
- 26. Rails Aktion/Fragment Cache nur wenn Admin Benutzer nicht angemeldet ist
- 27. Vb.net aktueller Benutzer angemeldet POS
- 28. Abfrage Benutzer angemeldet mit Dashboard-Plattform
- 29. apppool identity vs angemeldet Benutzer
- 30. Benutzer bleibt angemeldet, auch wenn ich das Konto lösche
Große Antwort, ich weiß nicht, wie ich die 'try' Option übersehen habe. –