2017-08-19 3 views
2

Ich habe eine node.js-Anwendung, für die ich ein benutzerdefiniertes SSO-Anmeldesystem implementiere. Wie es funktioniert, ist, dass es GET-Parameter des Benutzers (Benutzername, echter Name und E-Mail) sowie eine Signatur, die von einer API auf meinem anderen Server erstellt wurde, dauert. Was mein Code tun soll, ist, die URL-GET-Parameter des Benutzers zu übernehmen, sie zu verketten und sie dann mit dem privaten Schlüssel zu verschlüsseln. Dann würde es das verschlüsselte Ergebnis mit der Signatur vergleichen. Wenn es gleich ist, wird true zurückgegeben und der Benutzer ist angemeldet. Mein Code ist unten.Wiederholte Serverfunktionsimplementierung für verschiedene Benutzer

Allerdings erkannte ich, dass dies nicht funktionieren würde, da der Servercode nur einmal ausgeführt wird. Wenn sich mehr als ein Benutzer anmeldet, führt dies zu Fehlern. Wie kann ich diese Funktion jedes Mal aufrufen, wenn die URL besucht wird?

+0

Dieser Code läuft einmal, ja, aber für jede Anfrage. Dies bedeutet, dass der Code, den Sie dort haben, einmal ausgeführt wird, jedes Mal, wenn ein GET auf der '/' Route Ihres Servers ausgeführt wird. – EMX

Antwort

2

Eine Route ist definiert, um dem Server zu sagen, was zu tun ist jedes Mal eine Aktion (GET, POST, PUT, ...) wird in dieser Route ausgeführt, und nicht nur einmal.

In diesem Beispiel wird jedes Mal, wenn ein GET auf diesen Server @ Port 3000 ausgeführt wird, ein Zähler erhöht und der Server antwortet mit der aktuellen Anzahl der gedienten Anforderungen.

const express = require('express') 
const app = express() 
var totalRequests = 0; 

app.get('/', function (req, res) { 
    totalRequests++ 
    res.send('Hello Request #'+totalRequests) 
}) 

app.listen(3000, function() { 
    console.log('Example app listening on port 3000!') 
}) 
+0

Danke! Ich hätte eine globale Variable, denke ich. – Hundotte

Verwandte Themen