我使用Azure Blob Storage Client Libary v11 for .Net。
我编写了一个程序,客户可以用来上传文件。我为客户生成了一个带有SAS令牌的URL(有效期为x天),客户可以使用该程序上传文件。这是一个示例网址:
useEffect(() => {
handleCollapsibleViewPort();
}, [collapsed]);
const handleCollapsibleViewPort = () => {
if(uncollapsedHeight !== 0 && collapsibleRef.current.clientHeight > uncollapsedHeight ) {
scrollElementToTop(collapsibleRef.current.getBoundingClientRect().top);
}
}
在开始上载之前,如何确定SAS令牌是否仍然有效?
更新:
我的网址中没有 se 声明。 这是我生成网址的代码:
https://storage.blob.core.windows.net/123456789?sv=2019-07-07&sr=c&si=mypolicy&sig=ASDH845378ddsaSDdase324234234rASDSFR
答案 0 :(得分:0)
通常SAS
令牌包含se
字段,您可以根据SAS
字段确定se
令牌何时到期。
在下面的示例中,SAS令牌的到期时间为2020-09-03T16:17:28Z
?sv = 2019-12-12&ss = bfqt&srt = sco&sp = rwdlacupx&se = 2020-09-03T16:17:28Z&st = 2020-09-02T08:17:28Z&spr = https&sig = <信号字符串>
您可以参考此官员document。
如果没有像您提供的se
令牌那样包含SAS
字段,那么我认为无法直接确定它何时到期。
答案 1 :(得分:0)
我自己找到了解决方案。该blog描述了两个不同的ShardedAccessSignature。我已经修改了代码,以便现在在URL中也拥有se声明。
解决方案:
protected void GetSharedAccessSignature(
String containerName, String blobName)
{
CloudStorageAccount cloudStorageAccount =
CloudStorageAccount.FromConfigurationSetting(“DataConnectionString”);
CloudBlobClient cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient();
CloudBlobContainer cloudBlobContainer =
new CloudBlobContainer(containerName, cloudBlobClient);
CloudBlockBlob cloudBlockBlob =
cloudBlobContainer.GetBlockBlobReference(blobName);
SharedAccessPolicy sharedAccessPolicy = new SharedAccessPolicy();
sharedAccessPolicy.Permissions = SharedAccessPermissions.Read;
sharedAccessPolicy.SharedAccessStartTime = DateTime.UtcNow.AddMinutes(-10);
sharedAccessPolicy.SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(40);
String sharedAccessSignature1 =
cloudBlockBlob.GetSharedAccessSignature(sharedAccessPolicy);
String sharedAccessSignature2 =
cloudBlockBlob.GetSharedAccessSignature( new SharedAccessPolicy(), “adele”);
}
sharedAccessSignature1包含se声明。 在我最初的问题代码中,我使用了sharedAccessSignature2。