【发布时间】:2022-07-22 11:32:28
【问题描述】:
我正在尝试将来自 AWS Cognito 的 JWT 令牌附加到上传组件中的 Uppy 请求。要获取令牌,我相信我需要一个异步函数:
async function getSessionToken() {
const data = (await Auth.currentSession()).getAccessToken().getJwtToken()
console.log(data)
return data;
}
然后我在实际的函数组件中使用这个返回值:
export default function UppyUpload () {
const data = getSessionToken();
const uppy = useUppy(() => {
return new Uppy({
debug: true,
autoProceed: false,
restrictions: {
maxNumberOfFiles: 1,
minNumberOfFiles: 1,
allowedFileTypes: ['video/*'],
requiredMetaFields: ['caption'],
}
})
.use(AwsS3Multipart, {
limit: 4,
companionUrl: 'http://localhost:3020/',
companionHeaders: {
'Authorization': "Bearer " + data,
'uppy-auth-token': "Bearer " + data,
}
})
...
然而,UppyUpload 内部的data 会返回一个承诺,正如预期的那样。但我需要这个以某种方式解析为一个值,因为我认为 Uppy 初始化在函数渲染时需要这个值 (Authorization': "Bearer " + data)。
我不确定如何解决此问题,但我觉得这可能是一个常见问题。有推荐的方法吗?
【问题讨论】:
-
const data = await getSessionToken(); -
不是所有
await语句都必须在async函数中吗?函数组件UppyUpload不是异步函数吗? -
对
getUploadParameters使用AwsS3选项 -
使用 S3Multipart,而不是 S3。编辑原帖
标签: reactjs amazon-cognito uppy