Es ist möglich, Bilder von öffentlichen Ansicht in Laravel 5.x-Ordner zu schützen.
erstellen images
Ordner unter storage
Ordner (I storage
Ordner gewählt, weil sie die Genehmigung schreiben schon, dass ich verwenden können, wenn ich Bilder hochladen, um es) in Laravel wie storage/app/images
.
Verschieben Sie die Bilder, die Sie vor dem öffentlichen Ordner schützen möchten, in den neu erstellten Ordner images
. Sie könnten auch einen anderen Ort wählen, um den Ordner images
zu erstellen, aber nicht im öffentlichen Ordner, sondern mit der Laravel-Ordnerstruktur, aber immer noch ein Beispiel für einen logischen Speicherort, nicht im Controller-Ordner. Als nächstes müssen Sie einen Routen- und Bildcontroller erstellen.
Route erstellen
Route::get('images/users/{user_id}/{slug}', [
'as' => 'images.show',
'uses' => '[email protected]',
'middleware' => 'auth',
]);
Die Route wird alle Bildanforderung Zugriff auf Authentifizierungsseite weiterleiten, wenn Person nicht angemeldet ist.
erstellen ImagesController
class ImagesController extends Controller {
public function show($user_id, $slug)
{
$storagePath = storage_path('app/images/users/' . $user_id . '/' . $slug);
return Image::make($storagePath)->response();
}
}
Sie können Ihren Speicherpfad und die Datei-/Ordnerstruktur ändern, wie Sie Ihre Anforderung erfüllen möchten. Dies dient nur dazu, zu demonstrieren, wie ich es gemacht habe und wie es funktioniert.
Sie können auch eine Bedingung hinzufügen, um die Bilder nur für bestimmte Mitglieder im Controller anzuzeigen.
Es ist auch möglich, den Dateinamen mit Dateinamen, Zeitstempel und anderen Variablen zusätzlich zu hashen.
Zusatz: einige gefragt, ob diese Methode als Alternative zum öffentlichen Ordner-Upload verwendet werden kann, ja es ist möglich, aber es ist nicht die Praxis empfohlen, da in diesen answer erläutert. Daher kann die gleiche Methode auch zum Hochladen von Bildern im Speicherpfad verwendet werden, auch wenn Sie sie nicht schützen möchten. Folgen Sie einfach demselben Prozess, aber entfernen Sie 'middleware' => 'auth',
.Auf diese Weise geben Sie keine 777-Berechtigung in Ihrem öffentlichen Ordner und verfügen weiterhin über eine sichere Upload-Umgebung. Dasselbe, das answer erwähnt wird, erklären auch, wie man diese Methode mit aus Authentifizierung verwendet, wenn jemand es verwenden oder alternative Lösung auch geben würde.
Haben Sie versucht, eine Route zum Schutz des Bildpfads einzurichten? – haakym
nein, aber ich werde versuchen, die folgende Antwort und lassen Sie wissen –
@ Haakym, es das Beispiel unten für mich gearbeitet. Du hast recht, es ist in der Route. –