首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用gundb进行JWT身份验证

使用gundb进行JWT身份验证
EN

Stack Overflow用户
提问于 2016-07-27 03:30:32
回答 1查看 988关注 0票数 4

我可以对gundb使用JWT身份验证吗?如果是这样,会不会大大减慢我的同步速度?我打算尝试使用教程here来实现一个测试,但是我想看看是否有什么我应该注意的“问题”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-11 15:47:22

API已更改为使用中间件系统。SEA (Security,Encryption,Authorization,安全、加密、授权)框架将发布来处理这样的事情。但是,您可以通过在服务器上执行以下操作来执行您自己的操作:

代码语言:javascript
复制
Gun.on('opt', function(ctx){
  if(ctx.once){ return }
  ctx.on('in', function(msg){
    var to = this.to;
    // process message.
    to.next(msg); // pass to next middleware
  });
});

通过opt钩子注册in侦听器可以让这个中间件成为第一个(甚至在枪核之前),这样您就可以过滤所有输入并在必要时拒绝它们(通过不调用to.next(msg))。

同样,要在客户机上添加headers,您需要注册一个out侦听器(类似于我们对in所做的操作),并修改传出消息以使其具有msg.headers = {token: data},然后通过执行to.next(msg)将其转发到下一个中间件层(可能是websocket/传输挂钩)。随着它的稳定,还会有更多的文档出现。

老生常谈:

非常晚的回答,很抱歉没有更快地解决这个问题:

默认的websocket/ajax适配器允许您更新在每条网络消息上传递的headers属性:

代码语言:javascript
复制
gun.opt({
  headers: { token: JWT },
});

在服务器上,您可以根据令牌截取和拒绝/授权请求:

代码语言:javascript
复制
gun.wsp(server, function(req, res, next){
    if('get' === req.method){
        return next(req, res);
    }
    if('put' === req.method){
        return res({body: {err: "Permission denied!"}});
    }
});

上面的示例拒绝所有写操作并授权所有读操作,但是您可以用自己的规则替换此逻辑。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38598391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档