针对不同用户的重复服务器功能实现
Repeated server function implementation for various users
我有一个 node.js 应用程序,我正在为其实施自定义 SSO 登录系统。它的工作原理是它获取用户的 GET 参数(用户名、真实姓名和电子邮件)以及由我的其他服务器上的 API 生成的签名。我的代码应该做的是获取用户的 url GET 参数,连接它们,然后用私钥加密它们。然后,它将加密结果与签名进行比较。如果相等,则 returns 为真,用户已登录。我的代码如下。
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')
}
});
但是,我意识到这行不通,因为服务器代码只运行一次。这意味着如果不止一个用户登录,就会导致错误。每次访问 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!')
})
我有一个 node.js 应用程序,我正在为其实施自定义 SSO 登录系统。它的工作原理是它获取用户的 GET 参数(用户名、真实姓名和电子邮件)以及由我的其他服务器上的 API 生成的签名。我的代码应该做的是获取用户的 url GET 参数,连接它们,然后用私钥加密它们。然后,它将加密结果与签名进行比较。如果相等,则 returns 为真,用户已登录。我的代码如下。
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')
}
});
但是,我意识到这行不通,因为服务器代码只运行一次。这意味着如果不止一个用户登录,就会导致错误。每次访问 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!')
})