小编nod*_*man的帖子

JWT:当用户打开新标签时如何处理GET请求?

在以API为中心的应用程序上使用JWT而不是Cookie时有很多优点,我知道您可以在通过浏览器访问应用程序时将令牌存储在sessionStorage上.您可以在JS代码上设置拦截器,以便在GET请求的Authorization标头上注入JWT令牌 - 只要这些GET请求来自对用户进行身份验证的相同代码.

但是,当用户通过身份验证后会发生什么,然后打开新选项卡并尝试访问应用程序/站点的不同受限区域(甚至同一区域)?在这种情况下,没有拦截器在新选项卡上的Authorization标头上注入令牌.我想服务器将收到GET请求,在Authorization标头上查找JWT令牌,但不会找到它,拒绝请求.

当您使用Cookie时,它们始终由浏览器本地发送,您不必担心新的选项卡和身份验证.

有没有办法在用户在第一个选项卡中进行身份验证时为浏览器上的域全局设置Authorization标头?如果有的话,这个问题的常用解决方案是什么?

javascript authentication cookies tabs jwt

10
推荐指数
1
解决办法
3809
查看次数

Webworker-threads:在工作者中使用"require"是否可以?

(使用Sails.js)

我正在测试webworker-threads(https://www.npmjs.com/package/webworker-threads),以便在Node上进行长时间运行的进程,以下示例看起来很好:

var Worker = require('webworker-threads').Worker;
var fibo = new Worker(function() {
    function fibo (n) {
        return n > 1 ? fibo(n - 1) + fibo(n - 2) : 1;
    }
    this.onmessage = function (event) {
        try{
            postMessage(fibo(event.data));                

        }catch (e){
            console.log(e);                
        }
    }
});
fibo.onmessage = function (event) {
    //my return callback
};
fibo.postMessage(40);
Run Code Online (Sandbox Code Playgroud)

但是只要我添加任何代码来查询Mongodb,它就会抛出异常:(在查询中不使用Sails模型,只是为了确保代码可以自己运行 - db没有密码)

var Worker = require('webworker-threads').Worker;
var fibo = new Worker(function() {
    function fibo (n) {
        return n > 1 ? fibo(n - …
Run Code Online (Sandbox Code Playgroud)

multithreading web-worker node.js sails.js

10
推荐指数
1
解决办法
4511
查看次数

RESTful:什么时候可以在不在服务器上创建资源的情况下进行POST?

根据REST原则,我知道服务器的所有POST都应该用于创建资源; 修改服务器上的内容.如果要获取信息,请使用GET.

但是,您需要发送大量信息以获取资源的情况呢?

例如,复杂的搜索参数对于URL来说太长了.或者,假设您想要发送要搜索的图像,例如OCR或类似的图像比较.

在这些情况下,似乎有必要将数据POST到服务器,但结果不会是变化,只是信息.POST图像,接收服务器上存在的类似图像的列表.

我不想构建违反这些原则的REST API,除非它们实际上不是违规行为.

编辑

到目前为止,似乎所有答案都是正确的(!):Sergio和Kay对于在需要时"弯曲规则"的实际价值是正确的.但uriDium有一个好点:

图像上传实际上导致服务器发生变化:有一个新文件,虽然是暂时的.可以将复杂搜索视为"文档".

我想我们可以考虑"短暂的"变化的概念,"短暂的POST",其中服务器被更改并产生新的短暂资源.在这种情况下,对于RESTful考虑因素,可能这可能是以下行为:

  1. 客户端:POST一个短暂的资源
  2. 服务器:使用临时资源URI和TTL头(?)进行响应.使用资源URI以外的其他方式回复是不安宁的 - 对吧?
  3. 客户端:在TTL时间内获取短暂资源
  4. 服务器在TTL之后删除资源

我会考虑用第2步的完整短暂资源做出回应并在那里结束互动,只是为了反叛:-)

methods rest principles

9
推荐指数
1
解决办法
1423
查看次数

中止上传导致Sails js / Skipper崩溃

参考:https : //github.com/balderdashy/skipper/issues/49

适配器:skipper-gridfs

基本控制器代码:

req.file('fileTest')
        .upload({

        // You can apply a file upload limit (in bytes)
        maxBytes: maxUpload,
        adapter: require('skipper-gridfs'),
        uri: bucketConnect,
        saveAs : function (__newFileStream,cb) {
            cb(null, __newFileStream.filename);
        }

    }, function whenDone(err, uploadedFiles) {
        if (err) {
            var error = {  "status": 500, "error" : err };
            return res.serverError(error);
        }else {
Run Code Online (Sandbox Code Playgroud)

我有一个jQuery-File-Upload客户端(https://blueimp.github.io/jQuery-File-Upload/),通过使用此处描述的jqXHR中止来实现“取消”过程(https://github.com/blueimp/ jQuery-File-Upload / wiki / API):

$('button.cancel').click(function (e) {
    jqXHR.abort();
});
Run Code Online (Sandbox Code Playgroud)

客户端中止后,服务器崩溃并显示以下消息:

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: Request …
Run Code Online (Sandbox Code Playgroud)

file-upload sails.js skipper

5
推荐指数
1
解决办法
1136
查看次数

Zapier Twilio凭证存储:这有多安全?

在创建Twilio Zap(和其他人)时,我们需要为您现有的Twilio帐户提供帐户Sid和帐户令牌.

我想这是由Zapier存储在某个地方(希望有可逆加密),否则它们无法执行将来的请求.有人知道这有多安全吗?他们是否发布了有关如何保护这些数据的信息?

编辑

好吧,没有什么谷歌搜索无法帮助

https://zapier.com/help/data-privacy/

是的,他们使用AES加密数据并分别存储密钥.我想总会有数据泄露的危险,但这是权衡.

我只是想知道为什么他们自己的登录凭证使用SHA(1000次迭代),而我相信最推荐的是bcrypt.

security credentials zapier

3
推荐指数
1
解决办法
1369
查看次数

PHP并发更改同一用户的会话变量?

假设我们有一个用户变量$_SESSION['variable'],在用户访问页面时可以对其进行修改,也可以不进行修改。

假设同一用户打开了多个浏览器窗口,并且以某种方式同时向服务器发出了会话变量更改所导致的请求。

问题:

由于这些更改针对相同的变量,因此服务器如何“排队”这些更改?这里是否可能发生服务器错误?

有没有一种方法可以“锁定”用于读取/写入的会话变量,以便在更改其值之前执行某种状态检查?

编辑 (感谢Unheilig的清理工作)

关于“排队”,我对两个请求同时到达会发生什么感兴趣:

将X更改为1

将X更改为2

我知道这似乎不是现实世界,但是在设计某些东西时我才想到。如果系统允许来自同一用户的太多并发请求,可能会成为问题。

php session

2
推荐指数
1
解决办法
1231
查看次数