Score:1

การควบคุมการเข้าถึงโดยใช้คีย์สำหรับไฟล์ส่วนตัว

ธง jp

ฉันกำลังสร้างไซต์ที่ให้บริการเนื้อหาวิดีโอที่ต้องชำระเงิน เพื่อฝังลงในไซต์ของลูกค้าเอง ฉันควบคุมการเข้าถึงโหนดที่มีเนื้อหาวิดีโอตามบทบาทของผู้ใช้ที่ซื้อได้สำเร็จ

ตอนนี้ฉันต้องให้รหัสฝังตัวแก่ผู้ใช้ซึ่งควรจะทำงานจากโดเมนของพวกเขาเท่านั้นสำหรับตอนนี้ ฉันยินดีที่จะจำกัดให้เฉพาะผู้ใช้บางคนเท่านั้น

ฉันได้ติดตั้งโมดูล key_auth และ restui แล้ว และฉันได้เปิดใช้งานทรัพยากร REST 'ไฟล์' ตอนนี้ฉันสามารถเข้าถึงข้อมูล *เกี่ยวกับ* ไฟล์ในฐานะผู้ใช้ที่ไม่ระบุตัวตนด้วยคีย์ api ของสมาชิกที่ชำระเงินในแบบสอบถาม อย่างไรก็ตาม ฉันไม่สามารถเข้าถึงไฟล์จริงได้

ข้อมูลที่ฉันได้รับกลับมาอยู่ด้านล่าง

{"fid":[{"value":3}],"uuid":[{"value":"5655ecda-b421-4ab8-aa92-d43c6c0fbfdf"}],"langcode":[{"value":" th"}],"uid":[{"target_id":1,"target_type":"user","target_uuid":"58d862eb-86e9-4ec6-bb33-89bda5c1767a","url":"\/user\ /1"}],"ชื่อไฟล์":[{"value":"file_example_MP4_480_1_5MG.mp4"}],"uri":[{"value":"private:\/\/2022-04\/file_example_MP4_480_1_5MG.mp4" ,"url":"\/system\/files\/2022-04\/file_example_MP4_480_1_5MG.mp4"}],"filemime":[{"value":"video\/mp4"}],"filesize":[ {"value":1570024}],"สถานะ":[{"value":true}],"created":[{"value":"2022-04-16T15:52:39+00:00"," รูปแบบ":"Y-m-d\TH:i:sP"}],"เปลี่ยน":[{"value":"2022-04-16T15:52:43+00:00","รูปแบบ":"Y-m-d\ TH:i:sP"}]}

ฉันจะเข้าถึงวิดีโอจริงด้วยวิธีนี้ได้อย่างไร

apaderno avatar
us flag
ฉันใช้สิ่งนี้โดย *เข้าถึงวิดีโอจริง* ซึ่งหมายถึงการได้รับ URL ของวิดีโอ เนื่องจากคุณใช้ REST API ฉันจึงถือว่าคำขอไม่ได้มาจากไซต์ Drupal เส้นทางสัมพัทธ์ของวิดีโอมีให้ใน `uri.url` คุณต้องเพิ่ม URL ของไซต์ ตัวอย่างเช่น หากเป็น `http://example.com/drupal` URL ของวิดีโอนั้นจะเป็น `http://example.com/drupal/system/files/2022-04/file_example_MP4_480_1_5MG.mp4` เนื่องจากโค้ดกำลังส่งคำขอ REST จึงทราบ URL ที่ส่งคำขอไป ซึ่งหมายความว่าสามารถดึงส่วนที่ขาดหายไปในเส้นทางวิดีโอเพื่อทำให้เป็น URL ที่สมบูรณ์ได้
apaderno avatar
us flag
หรือคุณกำลังถาม *ในด้าน Drupal ฉันจะแก้ไขค่าที่ส่งคืนจาก REST API เพื่อรวม URL ของวิดีโอที่สมบูรณ์ได้อย่างไร*
apaderno avatar
us flag
หรือ *เข้าถึงวิดีโอจริง* หมายความว่าการเข้าถึงวิดีโอโดยใช้ URL จากภายนอก Drupal จะส่งกลับข้อผิดพลาด 403 และคุณต้องการทราบวิธีหลีกเลี่ยงสิ่งนั้น เนื่องจากวิดีโอถูกบันทึกเป็นไฟล์ส่วนตัว ทางฝั่ง Drupal การเข้าถึงไฟล์เหล่านั้นจึงถูกควบคุมโดย [`hook_file_download()`](https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core% 21File%21file.api.php/function/hook_file_download/9.3.x) การใช้งาน hook นั้นจะเข้าใจไฟล์ที่ร้องขอโดย *ไคลเอนต์* ที่ใช้ REST API เพื่อเข้าถึงข้อมูลได้อย่างไรเป็นคำถาม "จริง" ในกรณีนี้
Alfred Armstrong avatar
cn flag
หากวิดีโอจะถูกฝังในไซต์ไคลเอนต์ ทุกคนที่ชมวิดีโอจะต้องมีสิทธิ์เข้าถึงคุณอาจป้องกันไม่ให้ฝังลงในไซต์ที่ไม่ได้รับอนุญาต เนื่องจากเบราว์เซอร์ส่วนใหญ่จะปฏิบัติตามส่วนหัวของนโยบายความปลอดภัยของเนื้อหา แต่ถ้าวิดีโอถูกแสดงเป็นไฟล์ คุณจะไม่สามารถป้องกันไม่ให้มีการคัดลอกและแสดงบนแพลตฟอร์มอื่นได้
griz avatar
jp flag
@AlfredArmstrong ใช่หลังจากทำตามความยาวที่อธิบายไว้ในคำตอบของฉันแล้วสิ่งนี้ก็ชัดเจน ด้วยเหตุนี้ฉันจึงกำลังมองหาการใช้แพลตฟอร์มการโฮสต์วิดีโอที่ให้การป้องกันสิ่งนี้ แต่มันเป็นการเดินทางที่น่าสนใจ
griz avatar
jp flag
@apaderno ขอบคุณสำหรับความพยายามของคุณ สิ่งที่ฉันพยายามทำคือสร้างจุดสิ้นสุดที่เหลือซึ่งส่งคืนไฟล์ นั่นอาจส่งผลให้เกิดการดาวน์โหลดหากมีการร้องขอ GET ผ่านเบราว์เซอร์ หรือในไฟล์ที่แสดงในหน้าหากใช้ในแอตทริบิวต์ src
Score:0
ธง jp

ฉันต้องเขียนโมดูลที่กำหนดเองด้วยโครงสร้างต่อไปนี้: video_resource.info.yml src/Plugin/Deriver/VideoDeriver.php src/Plugin/rest/resource/VideoResource.php

ทรัพยากรที่เหลือและตัวรับเอนทิตีคือสำเนาที่ตัดทอนของ EntityResource และ EntityDeriver:

\Drupal\rest\Plugin\rest\resource\EntityResource \Drupal\rest\Plugin\Deriver\EntityDeriver

คลาสเหล่านี้ร่วมกันสร้างทรัพยากรที่เหลือสำหรับเอนทิตีทุกประเภท ฉันตั้งค่าของฉันให้สร้างเฉพาะทรัพยากรที่เหลือสำหรับประเภทเอนทิตี 'ไฟล์' โดยมีรหัสต่อไปนี้ในฟังก์ชัน get()

$filepath = $entity->getFileUri(); $response = ใหม่ BinaryFileResponse($filepath); ส่งคืน $response;

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา