使用gundb进行JWT身份验证

时间:2016-07-26 19:30:32

标签: gun

我可以使用gundb进行JWT身份验证吗?如果是这样,它会大大降低我的同步速度吗?我打算尝试使用教程here进行测试,但想看看是否有任何“陷阱”我应该注意。

1 个答案:

答案 0 :(得分:2)

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

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
  });
});

通过in挂钩注册opt监听器可以让这个中间件成为第一位(甚至在枪核之前),这样你就可以过滤所有输入并在必要时拒绝它们(通过不调用{ {1}})。

同样,要在客户端上添加标头,您需要注册一个to.next(msg)侦听器(类似于我们对out的处理方式)并修改外发消息以使in然后通过执行msg.headers = {token: data}将它传递给下一个中间件层(可能是websocket /传输挂钩)。随着它的稳定,会有更多的文档。

旧答案:

答案非常晚,抱歉这没有得到解决:

默认的websocket / ajax适配器允许您更新在每个联网消息上传递的to.next(msg)属性:

headers

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

gun.opt({
  headers: { token: JWT },
});

以上示例拒绝所有写入并授权所有读取,但您将使用自己的规则替换此逻辑。