Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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/3/reactjs/24.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
Node.js 通过与公共用户的套接字限制对Strapi私有内容的访问_Node.js_Reactjs_Sockets_Strapi - Fatal编程技术网

Node.js 通过与公共用户的套接字限制对Strapi私有内容的访问

Node.js 通过与公共用户的套接字限制对Strapi私有内容的访问,node.js,reactjs,sockets,strapi,Node.js,Reactjs,Sockets,Strapi,这个项目是关于一个有问题的在线测验系统。如果用户已经验证了JWT,我需要通过套接字向用户发送问题。到目前为止,我还没有对我接收和提交JWT的其他页面实施任何身份验证方法。 在Strapi管理面板中,我添加了问题内容类型,作为仅授权用户可见或可请求的内容类型。但是当涉及到套接字(而不是HTTP请求)时, 不会给用户任何不应该看到的警告或错误,也不会警告我。要求提问的神奇代码是: socket.emit('hello',{message:wait-strapi.services.question.f

这个项目是关于一个有问题的在线测验系统。如果用户已经验证了JWT,我需要通过套接字向用户发送问题。到目前为止,我还没有对我接收和提交JWT的其他页面实施任何身份验证方法。
在Strapi管理面板中,我添加了
问题
内容类型,作为仅授权用户可见或可请求的内容类型。但是当涉及到套接字(而不是HTTP请求)时, 不会给用户任何不应该看到的警告或错误,也不会警告我。要求提问的神奇代码是:

socket.emit('hello',{message:wait-strapi.services.question.findOne()});
我使用了来自的代码,他们已经知道如何使用
socket.io
与客户端通信。我们必须在headless CMS的
bootstrap.js
文件中编写自定义代码

在应用程序之前运行的异步引导函数 开始吧。 这允许您设置数据模型、运行作业或 执行一些特殊的逻辑。 请参阅此处的更多详细信息:

这是我的
bootstrap.js文件

“严格使用”;
module.exports=async()=>{
process.nextTick(()=>{
var io=require('socket.io')(strapi.server);
io.on('connection',异步函数(套接字){
console.log(`a user connected`)
//在用户连接上发送消息,请求收集问题
emit('hello',{message:await-strapi.services.question.findOne()});
//侦听用户diconnect
socket.on('disconnect',()=>{
console.log('a user disconnected')
});
});
strapi.io=io;//在strapi主对象内注册套接字io,以便在任何地方全局使用它
})
};
这是我在React前端的客户端:

import React,{useState,useffect}来自“React”;
从“socket.io客户端”导入socketIOClient;
常量端点=”http://localhost:1337";
函数App(){
const[response,setResponse]=useState();
useffect(()=>{
const socket=socketIOClient(端点);
socket.on('hello',(msg,cb)=>{
console.log('sockethi')
console.log(msg.message)
setResponse('sinav icerigi:'+JSON.stringify(msg.message))
});
}, []);
返回(

答复是:

{response}

); } 导出默认应用程序;

问题:需要您告诉我如何尽可能使用Strapi的函数安全地接收和使用JWT身份验证。 公共用户的Strapi设置: