Как запретить общедоступный доступ к файлу в Laravel?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как запретить общедоступный доступ к файлу в Laravel?

Сообщение Anonymous »

Я еще новичок в Laravel. Пожалуйста, помогите мне решить мою проблему. Я остановился, чтобы скрыть файл от публики. Я пытаюсь сделать доступ к файлу из общедоступного в частный в Laravel 7.
Я поместил все ссылки в аутентификацию, и перед использованием всем ссылкам требовался доступ. Мне пытались получить доступ к некоторым ссылкам для создания записи. Я не могу этого сделать, и система требует авторизации, но когда я использую URL-адрес http://127.0.0.1:8000/storage/actions/f ... .something без входа в систему для доступа к файлу изображения. Я все еще вижу файл.
Это мой маршрут
Route::group(['prefix' = > 'admin', 'middleware'=> ['auth', 'administrator']], function () {

Код: Выделить всё

//Action
Route::get('/addAction', 'admin\ActionController@create');
Route::get('/deleteAction/{id}', 'admin\ActionController@delete');
Route::get('editAction/{id}', 'admin\ActionController@edit');
Route::post('/addAction', 'admin\ActionController@store');
Route::post('/updateAction/{id}', 'admin\ActionController@update');
Route::get('/allAction', 'admin\ActionController@index');
Route::get('/delete/actionImage/{id}', 'admin\ActionController@deleteimages');
});
Это контроллер, который я использую для хранения данных в базе данных и изображения в пути к файлу.

Код: Выделить всё

public function index(){
return view('admin.allAction')
->with('actions',Action::all())
->with('challenges',Challenge::all())
->with('users',User::all())
->with('status',Status::all())
->with('images',Images::all());
}

public function create(){

$users = DB::table('users')
->where('role','2')
->get();

return view('admin.addAction')
->with('users', $users)
->with('status',Status::all());

public function store(Request $request){
$request->validate([
'name' => 'required|string|max:188',
'objective' => 'string|max:888',
'images' => 'required',
'images.*' => 'file|image|mimes:jpeg,png,jpg|max:8000',
]);

// Insert Data to Table
$action=new Action();
$action->name=$request->name;
$action->objective=$request->objective;
$action->status_id=$request->status_id;
$action->owner_id=$request->owner_id;
$action->challenge_id=$request->challenge_id;
/*dd($action);*/

$action->save();

if ($request->hasfile('images')) {
$images = $request->file('images');

foreach($images as $image) {
$name = time().'-'.$image->getClientOriginalName();
$name = str_replace(' ','-',$name);
/*$path =*/ $image->storeAs('actions', $name, 'public');

Images::insert([ /*OrUpdate*/
'name' => $name,
'action_id' => $action->id,
]);
}
}

Session()->flash("success", "Success!");
return redirect('/admin/addAction');
Мой filesystem.php

Код: Выделить всё

'disks' => [

'local' => [
'driver' => 'local',
'root' => storage_path('app'),
'permissions' => [
'file' => [
'public' => 0664,
'private' => 0600,
],
'dir' => [
'public' => 0775,
'private' => 0700,
],
],
],

'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],

's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
],

],
Я никогда не создаю личный файл, пока не знаю, как это сделать. Я пытался поискать в Интернете, как это сделать, но все равно не могу.
Заранее спасибо за все комментарии и извините за мой английский.

Подробнее здесь: https://stackoverflow.com/questions/668 ... in-laravel
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»