fix(storage): 延长七牛私有读链接有效期
This commit is contained in:
parent
18dc1aa8ed
commit
7b94f30108
@ -79,7 +79,7 @@ export const config = {
|
||||
filePath: process.env.QINIU_FILE_PATH,
|
||||
useHttps: process.env.QINIU_USE_HTTPS !== 'false',
|
||||
privateBucket: process.env.QINIU_PRIVATE_BUCKET === 'true',
|
||||
privateUrlExpiresSeconds: Number(process.env.QINIU_PRIVATE_URL_EXPIRES_SECONDS || 3600),
|
||||
privateUrlExpiresSeconds: Number(process.env.QINIU_PRIVATE_URL_EXPIRES_SECONDS || 7200),
|
||||
},
|
||||
auth: {
|
||||
secret: process.env.NEXTAUTH_SECRET,
|
||||
|
||||
@ -262,36 +262,44 @@ describe('storage object provider', () => {
|
||||
data: {},
|
||||
})
|
||||
|
||||
const storage = await import('./storage')
|
||||
const buffer = Buffer.from('private-glb')
|
||||
const nowSpy = jest.spyOn(Date, 'now').mockReturnValue(1_700_000_000_000)
|
||||
|
||||
await expect(
|
||||
storage.uploadBufferToObjectStorage(
|
||||
buffer,
|
||||
'/models/table.glb',
|
||||
'model/gltf-binary',
|
||||
),
|
||||
).resolves.toBe(
|
||||
'/api/storage/object?key=prod-assets%2Fmodels%2Ftable.glb',
|
||||
)
|
||||
try {
|
||||
const storage = await import('./storage')
|
||||
const buffer = Buffer.from('private-glb')
|
||||
|
||||
expect(storage.getStorageAccessMode()).toBe('private')
|
||||
expect(storage.createObjectReadUrl('models/table.glb')).toContain(
|
||||
'http://tevepd6od.hd-bkt.clouddn.com/prod-assets/models/table.glb?e=',
|
||||
)
|
||||
expect(
|
||||
storage.resolveObjectStorageUrlForServerAccess(
|
||||
await expect(
|
||||
storage.uploadBufferToObjectStorage(
|
||||
buffer,
|
||||
'/models/table.glb',
|
||||
'model/gltf-binary',
|
||||
),
|
||||
).resolves.toBe(
|
||||
'/api/storage/object?key=prod-assets%2Fmodels%2Ftable.glb',
|
||||
),
|
||||
).toContain(
|
||||
'http://tevepd6od.hd-bkt.clouddn.com/prod-assets/models/table.glb?e=',
|
||||
)
|
||||
expect(
|
||||
storage.resolveObjectStorageUrlForClientAccess(
|
||||
'/api/storage/object?key=prod-assets%2Fmodels%2Ftable.glb',
|
||||
),
|
||||
).toBe('/api/storage/object?key=prod-assets%2Fmodels%2Ftable.glb')
|
||||
expect(mockQiniuPrivateDownloadUrl).not.toHaveBeenCalled()
|
||||
)
|
||||
|
||||
expect(storage.getStorageAccessMode()).toBe('private')
|
||||
const signedReadUrl = storage.createObjectReadUrl('models/table.glb')
|
||||
expect(signedReadUrl).toContain(
|
||||
'http://tevepd6od.hd-bkt.clouddn.com/prod-assets/models/table.glb?e=',
|
||||
)
|
||||
expect(signedReadUrl).toContain('?e=1700007200&token=')
|
||||
expect(
|
||||
storage.resolveObjectStorageUrlForServerAccess(
|
||||
'/api/storage/object?key=prod-assets%2Fmodels%2Ftable.glb',
|
||||
),
|
||||
).toContain(
|
||||
'http://tevepd6od.hd-bkt.clouddn.com/prod-assets/models/table.glb?e=',
|
||||
)
|
||||
expect(
|
||||
storage.resolveObjectStorageUrlForClientAccess(
|
||||
'/api/storage/object?key=prod-assets%2Fmodels%2Ftable.glb',
|
||||
),
|
||||
).toBe('/api/storage/object?key=prod-assets%2Fmodels%2Ftable.glb')
|
||||
expect(mockQiniuPrivateDownloadUrl).not.toHaveBeenCalled()
|
||||
} finally {
|
||||
nowSpy.mockRestore()
|
||||
}
|
||||
})
|
||||
|
||||
it('returns direct HTTPS Qiniu read URLs to clients for non-protected assets', async () => {
|
||||
|
||||
@ -484,7 +484,7 @@ function createQiniuStorageAdapter(): ObjectStorageAdapter {
|
||||
const useHttps = readBooleanEnv(process.env.QINIU_USE_HTTPS, true)
|
||||
const privateBucket = readBooleanEnv(process.env.QINIU_PRIVATE_BUCKET, false)
|
||||
const privateUrlExpiresSeconds = Math.max(
|
||||
Number(process.env.QINIU_PRIVATE_URL_EXPIRES_SECONDS) || 3600,
|
||||
Number(process.env.QINIU_PRIVATE_URL_EXPIRES_SECONDS) || 7200,
|
||||
60,
|
||||
)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user