具有 NPM azure-storage 的 Azure 文件存储不返回访问令牌



NPM Azure-storage 版本是 2.10.3

以下代码尝试在现有共享、目录和文件上生成 SAS 令牌。代码运行到完成,但不返回令牌。

我正在使用控制台.log来查看它停止的位置。唯一的日志是第一个:即将生成令牌。

我正在构建一个成功添加和删除文件的类 - 该部分有效。仅获取 SAS 令牌不会执行任何操作 - 它不会失败 - 它不会成功。

为什么它甚至没有错误?如何获得代币?

const azure = require('azure-storage');
try{
  const connectionString = "xxx";
  const share = "yyy";
  const directory = "this-is-a-test";
  const file = "short_en.mp3";
  var startDate = new Date();
  var expiryDate = new Date(startDate);
  expiryDate.setMinutes(startDate.getMinutes() + 100);
  startDate.setMinutes(startDate.getMinutes() - 100);
  const sharedAccessPolicy =  {
      AccessPolicy: {
        Permissions: azure.FileUtilities.SharedAccessPermissions.READ,
        Start: startDate,
        Expiry: expiryDate
      }
  };            
  const fileService = new azure.FileService(connectionString);
  console.log("about to generate token");
  fileService.generateSharedAccessSignature(share, directory, file, sharedAccessPolicy, (error, result) => {
    console.log("getting token response");
    if(error) console.log(`result ${JSON.stringify(error)}`);
      console.log(`result ${JSON.stringify(result)}`);
  });
}catch(err){
  console.log(`result ${JSON.stringify(err)}`);
}

您只启用了读取,这是您想要的吗?

let startDate = new Date();
let expiryDate = new Date(startDate);
expiryDate.setFullYear(startDate.getFullYear() + 100);
startDate.setFullYear(startDate.getFullYear());
    let sharedAccessPolicy = {
        AccessPolicy: {
            Permissions: azure.BlobUtilities.SharedAccessPermissions.READ + azure.BlobUtilities.SharedAccessPermissions.WRITE,
            Start: startDate,
            Expiry: expiryDate
        },
    };

您的日期格式是否正确?

另请查看 Azure 中的指数重试功能

问题是我认为 API 调用是异步的(使用 await(。它不是 - 它直接返回一个对象。我还找到了用于格式化开始日期和到期日期的示例代码。这是正确的代码。

    const azure = require('azure-storage');
try{
  const connectionString = "xxx";
  const share = "yyy";
  const directory = "this-is-a-test";
  const file = "short_en.mp3";
  var startDate = new Date();
  var expiryDate = new Date(startDate);
  expiryDate.setMinutes(startDate.getMinutes() + 5);
  var sharedAccessPolicy = {
    AccessPolicy: {
      Permissions: azure.FileUtilities.SharedAccessPermissions.READ,
      Start: startDate,
      Expiry: expiryDate
    }
  };

  const fileService = new azure.FileService(connectionString);
  console.log("about to generate token");
  const accessToken = fileService.generateSharedAccessSignature(share, directory, file, sharedAccessPolicy);
  console.log(`result ${JSON.stringify(accessToken)}`);
}catch(err){
  console.log(`result ${JSON.stringify(err)}`);
}

accessToken看起来像,为了安全起见,sig的缩短值:

"st=2019-07-25T18%3A39%3A41Z&se=2019-07-25T18%3A44%3A41Z&sp=r&sv=2018-03-28&sr=f&sig=C2k...NZgYA%3D"

最新更新