2016-04-20 3 views
0

im new in laravel 5.2, я просто хочу спросить, как вы можете поймать ссылку, полученную от uploads: http://sitename.com/uploads/59128.txt? Я хочу перенаправить их на страницу входа в систему, если они попытались получить доступ к любому маршруту или ссылке, полученной от uploads/{any filename}.Как поймать любую ссылку, полученную от загрузки/в laravel 5?

+0

Уточнить вопрос! Вы хотите перехватить ссылки на файлы внутри определенной папки? Имеется ли файл в вашей общей папке? Ваши файлы будут соответствовать шаблону '' '/ uploads/*. Txt'''. – BeS

ответ

0

@xerwudjohn простой вы не можете. Если этот файл находится в общей папке, каждый может получить доступ к нему whitout после входа в систему Один метод, который я пытался в течение нескольких минут, создать новый маршрут:.

Route::group(['middleware' => ['web', 'auth']], function() { 
    Route::get('/download/{id}', '[email protected]'); 
}); 

создать функцию showFile в DonwloadController

public function showFile($id) 
{ 
    return redirect('/image/'.$id.'.txt'); 
} 

или используйте модель, чтобы читать uniqueIds из любой таблицы и получать имя реального файла. Приветствия

1

Да, вы можете достичь, защищая свой маршрут с Идент промежуточного слоя, сделать небольшой FileController

class FileController extends Controller { 
    public function __construct() 
    { 
     $this->middleware('auth'); 
    } 

    public function getFile($filename) 
    { 
     return response()->download(storage_path($filename), null, [], null); 
    } 
} 

, а затем в routes.php

И это все. Теперь ваши аутентифицированные пользователи могут загружать файлы из папки хранения (но не вложенные папки), вызывая http://yoursite.com/file/secret.jpg. Добавить, вы можете использовать этот URL-адрес в атрибуте src тега изображения.

ответ оригинал source!

Смежные вопросы