Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 缺少快速SSL身份验证功能?_Javascript_Node.js_Express_Typescript_Ssl - Fatal编程技术网

Javascript 缺少快速SSL身份验证功能?

Javascript 缺少快速SSL身份验证功能?,javascript,node.js,express,typescript,ssl,Javascript,Node.js,Express,Typescript,Ssl,我正在尝试将SSL身份验证与中讨论的Express一起使用 我们在服务器代码中使用TypeScript(除了客户端代码之外),以获得强大的键入优势。 我们正在使用Express 4.14.1、@types/Express:“^4.0.36” 上面的链接(与大多数服务器端NodeJ一样)是JavaScript而不是TypeScript。链接中有一段代码如下所示: app.use(函数(请求、恢复、下一步){ 如果(!请求客户授权){ 返回res.status(401).send('用户未授权')

我正在尝试将SSL身份验证与中讨论的Express一起使用

我们在服务器代码中使用TypeScript(除了客户端代码之外),以获得强大的键入优势。 我们正在使用Express 4.14.1、@types/Express:“^4.0.36”

上面的链接(与大多数服务器端NodeJ一样)是JavaScript而不是TypeScript。链接中有一段代码如下所示:

app.use(函数(请求、恢复、下一步){
如果(!请求客户授权){
返回res.status(401).send('用户未授权');
}
#检查证书本身,甚至在此基础上进行验证!
var cert=req.socket.getPeerCertificate();
如果(证书主题){
console.log(cert.subject.CN);
}
next();
});
帮了大忙

对于TypeScript,我需要导入
tls.TLSSocket
以完成所有的键入工作, 并将
req.socket
转换为
TLSSocket

((req.socket) as TLSSocket).authorized
((req.socket) as TLSSocket).getPeerCertificate().
在常规的旧JavaScript中,它变得有点复杂。在我的开发环境中,我创建了一个httpServer(
http.createServer
)。在我的生产环境中,我创建了一个httpsServer(
https.createServer
)。因此,使用JavaScript
req.client
req.socket.getPeerCertificate()如果我没有在我的生产环境中工作,则没有定义
,因为服务器不是使用
https.createServer
创建的


感谢robertklep!

我不确定
req.client
,但是应该定义
req.socket
,因为Express
req
对象是“增强版本”内置
http.ClientRequest
,具有属性。对于TLS连接,这是的实例,具有和属性。哦,
req.client
req.socket
()相同。