小编mat*_*i.o的帖子

续订WebSocket连接的令牌的最佳做法是什么?

这可能是基于意见的,但我仍然怀疑是否有最佳实践,因为我对websocket实践几乎一无所知

我有一个从我自己获得JWT令牌的SPA OP.然后它使用该JWT连接到我使用REST和WebSockets的其他服务.

就REST来说,它非常简单:

  • REST API验证JWT(已发送Authorization: Bearer ...)并提供对受保护资源的访问,或者使用a响应401,让SPA知道它需要请求新令牌.

现在有websockets:

在加载SPA期间,一旦我获得了令牌,我就打开了一个WS到我的web服务.我发送的第一条消息是login_message我的JWT,然后我保留在服务器的websocket实例上以了解谁在发送消息.我收到的每个后续消息,我都会验证JWT是否已过期.

据我所知,一旦它到期,我面临两个选择:

  1. 删除websocket时会token_expired出现某种错误,并在令牌刷新后强制浏览器建立新的websocket连接.

  2. 保持websocket打开,返回错误消息并发送新的登录消息(刷新​​令牌后)

  3. 不要使用登录消息,只需在每个请求中发送JWT.

问题:您会推荐哪种方法?为什么?在安全性和性能方面.我没有列出其他常见做法吗?

websocket jwt openid-connect

15
推荐指数
1
解决办法
922
查看次数

TypedArray和ArrayBuffers(node/chrome)上的Object.freeze()无法按预期工作

我有一个带有TypedArray成员的对象,我想冻结它以防止在设置后修改数据.试图冻结TypedArray或它的ArrayBuffer并没有像我预期的那样表现.我想知道,出于好奇,为什么它的行为方式如此.我正在运行节点4.4.4和Chrome,它的行为或多或少都相同.

var typedArray = new Uint32Array(4);
typedArray[0] = 10;
typedArray[1] = 20;

Object.freeze(typedArray); 
// throws TypeError : Cannot freeze array buffer views with elements(...)
Run Code Online (Sandbox Code Playgroud)

我试过的下一件事就是冻结底层的ArrayBuffer

Object.freeze(typedArray.buffer); // Does not throws errors
Object.isFrozen(typedArray.buffer); // returns true

typedArray[0] = 50; // Successfully modifies the data, despite the buffer is frozen
Run Code Online (Sandbox Code Playgroud)

我知道我可以改变我的设计,不保留原始缓冲区,并在需要时从数据成员重建它.但我只是对这种行为感到好奇.

谢谢

javascript google-chrome node.js typed-arrays

8
推荐指数
1
解决办法
860
查看次数

将<style>放在SVG中的哪里?

对不起,如果这可能是基于意见的,但我希望有一个正确的答案..

应该在SVG文档中放置内联CSS样式?在我下面提供的示例中,我定义了两个样式和一个使用它们的圆.

第一个样式在defs标签内定义,第二个样式在svg标签内定义.

这两种样式都成功显示在圆圈上(至少在Chrome中他们这样做,但是没有检查其他浏览器).

我的问题是哪种方式更标准?

我认为保持样式defs可以使整个SVG更加整洁.但是,可以声称我不应该使用defs标签,因为没有人引用样式<use>

谢谢!

<svg height="100" width="100">
    <defs id="someDefs">
        <style id="style1">
            .blue-fill {
                fill : blue;
            }
        </style>
    </defs>
    <style id="style2">
        .red-stroke {
            stroke : red;
            stroke-width : 12
        }
    </style>
    <circle cx="50" cy="50" r="40" class="blue-fill red-stroke" />
</svg>
Run Code Online (Sandbox Code Playgroud)

svg

8
推荐指数
1
解决办法
5242
查看次数