第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Laravel 5中保護(hù)圖像免受公眾觀看?

如何在Laravel 5中保護(hù)圖像免受公眾觀看?

我已經(jīng)安裝了Laravel 5.0并進(jìn)行了身份驗(yàn)證。一切正常。我的網(wǎng)站僅對經(jīng)過身份驗(yàn)證的成員開放。內(nèi)部的內(nèi)容僅受身份驗(yàn)證成員的保護(hù),但網(wǎng)站內(nèi)的圖像不受公共視圖的保護(hù)。任何人直接寫入圖像URL都可以看到該圖像,即使該人未登錄系統(tǒng)也是如此。http://www.somedomainname.net/images/users/userImage.jpg我的問題:是否可以保護(hù)圖像(上面的URL示例)不受公開查看,換句話說,如果圖像的URL發(fā)送給任何人,則該個人必須是成員并登錄才能看到該圖像。那有可能嗎?
查看完整描述

3 回答

?
MYYA

TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個贊

我實(shí)際上并沒有嘗試過,但是我找到了Nginx auth_request模塊,該模塊允許您從Laravel檢查身份驗(yàn)證,但仍然使用Nginx發(fā)送文件。


它向給定的URL發(fā)送內(nèi)部請求,并檢查http代碼是否成功(2xx)或失?。?xx),如果成功,則讓用戶下載文件。


編輯:另一個選項是我嘗試過的東西,它似乎工作正常。您可以使用 X-Accel-Redirect-header從Nginx提供文件。該請求通過PHP進(jìn)行,但不是通過發(fā)送整個文件,而是將文件位置發(fā)送到Nginx,然后Nginx將其提供給客戶端。


查看完整回答
反對 回復(fù) 2019-11-02
?
LEATH

TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個贊

在上一個項目中,我通過執(zhí)行以下操作來保護(hù)上傳:


創(chuàng)建的存儲磁盤:


config/filesystems.php

'myDisk' => [

        'driver' => 'local',

        'root' => storage_path('app/uploads'),

        'url' => env('APP_URL') . '/storage',

        'visibility' => 'private',

    ],

這會將\storage\app\uploads\無法上載的文件上傳到公眾。


要將文件保存在控制器上:


Storage::disk('myDisk')->put('/ANY FOLDER NAME/' . $file, $data);

為了使用戶查看文件并保護(hù)上傳內(nèi)容免受未經(jīng)授權(quán)的訪問。首先檢查磁盤上是否存在文件:


public function returnFile($file)

{

    //This method will look for the file and get it from drive

    $path = storage_path('app/uploads/ANY FOLDER NAME/' . $file);

    try {

        $file = File::get($path);

        $type = File::mimeType($path);

        $response = Response::make($file, 200);

        $response->header("Content-Type", $type);

        return $response;

    } catch (FileNotFoundException $exception) {

        abort(404);

    }

}

服務(wù)的文件,如果用戶有權(quán)訪問:


 public function licenceFileShow($file)

{

    /**

     *Make sure the @param $file has a dot

     * Then check if the user has Admin Role. If true serve else

     */

    if (strpos($file, '.') !== false) {

        if (Auth::user()->hasAnyRole(['Admin'])) {

            /** Serve the file for the Admin*/

            return $this->returnFile($file);

        } else {

            /**Logic to check if the request is from file owner**/

            return $this->returnFile($file);

        }

    } else {

//Invalid file name given

        return redirect()->route('home');

    }

}

最后在Web.php路由上:


Route::get('uploads/user-files/{filename}', 'MiscController@licenceFileShow');


查看完整回答
反對 回復(fù) 2019-11-02
  • 3 回答
  • 0 關(guān)注
  • 666 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號