嗶嗶one
2023-03-18 17:54:32
我對我的項目有幾個問題,因為我已經(jīng)停止并且不知道如何繼續(xù)。我創(chuàng)建了一個小型 saas,類似于教育平臺。它是關(guān)于付費(fèi)訪問視頻文件的。編程語言是 TypeScript:React / NestJS / PostgreSQL / Stripe / AWS S3。我現(xiàn)在的邏輯如下 - 如果用戶付款,我將記錄添加到我的數(shù)據(jù)庫中:user_trainingsid | uuid | user_id | training_id 1 | d-2a | 1 | 1我的簡化訓(xùn)練基礎(chǔ)結(jié)構(gòu)如下所示:trainingsid | uuid | name | video_file_name_key 1 | d21x | foo | videos/boo.mp4文件videos/boo.mp4是我文件的密鑰,它在存儲桶 aws s3 中。因此,id 為 1 的用戶在登錄我的應(yīng)用程序后可以訪問培訓(xùn)?,F(xiàn)在,我該如何保護(hù)這個文件和文件的鏈接,使用戶無法共享它?我知道我可以啟用 CORS,這可能會解決我的問題,但我希望此文件的鏈接是唯一的。如果可能的話?這個文件能以某種方式得到保護(hù)嗎?我怎樣才能得到一個文件的鏈接?前端用戶只有密鑰。我可以通過我的服務(wù)器鏈接到該文件,但我不知道該怎么做。
1 回答

揚(yáng)帆大魚
TA貢獻(xiàn)1799條經(jīng)驗 獲得超9個贊
存儲在 Amazon S3 中的對象默認(rèn)是私有的。
對于您的情況,我建議使用Amazon S3 pre-signed URLs,這些 URLs 是有時間限制的 URLs,可以臨時訪問私有對象。
流程將是:
用戶登錄到您的應(yīng)用程序
用戶請求訪問課程
您的應(yīng)用程序檢查他們是否有權(quán)訪問課程
如果是這樣,應(yīng)用程序會生成一個預(yù)簽名的 URL,該 URL 的有效期為 30 分鐘
應(yīng)用程序返回課程鏈接,或在頁面中使用預(yù)簽名 URL(例如在標(biāo)簽中
<video>
)當(dāng)用戶單擊鏈接或在瀏覽器中打開頁面時,瀏覽器會通過預(yù)簽名 URL 從 S3 請求對象
Amazon S3 將驗證預(yù)簽名 URL 上的簽名并確認(rèn)其在有效期內(nèi)。如果是,它將對象返回給用戶。
如果有效期已過,則返回預(yù)簽名URL
Access Denied
只需幾行代碼即可生成預(yù)簽名 URL,并且不需要調(diào)用 AWS。
使用預(yù)簽名 URL 的好處在于您的應(yīng)用程序可以完全控制誰可以訪問該對象,但 Amazon S3 負(fù)責(zé)向用戶提供內(nèi)容。
添加回答
舉報
0/150
提交
取消