为各种用户重复执行服务器function

我有一个node.js应用程序,我正在实现一个自定义的SSOlogin系统。 它是如何工作的,它需要用户的GET参数(用户名,真实姓名和电子邮件)以及由我的另一台服务器上的API生成的签名。 我的代码应该做的是采取用户的url GET参数,连接它们,然后用私钥encryption它们。 然后,它将encryption结果与签名进行比较。 如果相等,则返回true,用户login。我的代码如下所示。

app.get('/', function(req, res) { if(!signedIn){ try{ var user = req.query.username; var name = req.query.realName; var email = req.query.email; var signature = req.query.signature; var encrypted = crypto.createHmac('sha256', config.privateKey).update(user + name + email).digest('hex'); if(encrypted == signature){ username = user; signedIn = true; res.sendFile(__dirname + '/view/index.html'); }else{ res.redirect("https://infinia.press/sso/login") } }catch(error){ res.redirect("https://infinia.press/sso/login") } } else{ res.sendFile(__dirname + '/view/index.html') } }); 

但是,我意识到这是行不通的,因为服务器代码只运行一次。 这意味着如果有多个用户login,就会导致错误。 每次访问url时如何调用这个函数?

定义一个路由,告诉服务器每次在该路由中执行一个操作(GET,POST,PUT,…),而不仅仅是一次。

在这个例子中,每次对这个服务器端口3000执行GET操作时,计数器将增加,服务器将响应当前的服务请求数量。

 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!') })