node.js - 如何取消对未授权资源的订阅
问题描述
下面是我的 apollo 订阅实现的原型。每个用户都可以使用或不使用身份验证令牌连接到 websocket。但只有当他们发送请求时,如果用户被授权或断开 websocket 连接,我应该能够为该请求提供服务。
const server = new ApolloServer({
typeDefs,
resolvers,
subscriptions: {
onConnect: async (connectionParams, webSocket) => {
if (connectionParams.authToken) {
try {
const user = await authenticate(connectionParams.authToken);
if(user) {
return { user };
}
} catch (error) {
return {};
}
}
return {};
},
},
context: async ({ req, res, connection }) => {
if (connection) {
return connection.context;
}
let user = null;
try {
user = await authenticateFromHeader(req);
} catch (error) {
console.log(error);
}
return { req, res, user };
}
});
我在哪里以及如何拆除它?我假设在订阅解析器中,但找不到如何。在一个连接中为经过身份验证和未经身份验证的订阅提供服务通常是个好主意吗?
解决方案
推荐阅读
- visual-studio - 从 NuGet 使用 WinSCPnet 时,如何在不复制 exe 的情况下将可执行文件放入自定义输出目录?
- sql-server - 更改用户的默认架构是否会影响其他打开的连接
- wpf - ef.net 核心,属性而不是字段
- ruby-on-rails - rails 6.0.0.rc2 - DNS 重新绑定和动态主机 - 错误
- unix - 日期前导 0 的匹配行
- java - 在 Kubernetes/Docker 容器中使用 JDBC 预认证数据源
- angular - 单击下一个和上一个按钮组件视图和标题 ID 应更改
- oracle - Oracle SQL 自定义分组/使用 SELECT 重命名
- c++ - 在提升直方图中定位一个 bin
- batch-file - 批处理文件输入文件夹名称或获取网络ID?