2016-11-01 2 views
-1

Symfony 3 웹 응용 프로그램에는 FOSUserBundle에서 관리하는 사용자 로그인 컨트롤이 있습니다. 사용자가 할 수도 있고하지 않을 수도있는 모든 필요한 동작을 제어하는 ​​서버 측의 로그인 상태를 확인하고 있습니다.웹 프론트 엔드의 이미지에 대한 액세스 제어

이제 사용자가 이미지를 업로드 할 수 있습니다. 사용자에게 모든 이미지를 보여주는보기가 있습니다. 프론트 엔드에게이 사용자 - 갤러리보기에 필요한 img-pathes를 제공하기 위해이 사용자 이미지의 모든 pathes를 프론트 엔드에 전달한 다음 거기에 표시합니다.

이것은 혼동 스러웠습니다. 이 img-pathes에 대한 액세스를 (로그인 한) 사용자에게만 어떻게 제한하고 다른 모든 사람들에게는 거부합니까? 또는 : 모든 사용자가 액세스 할 수있는 img 경로를 사용하지 않고 프론트 엔드 웹보기에 이미지를 제공하려면 어떻게해야합니까? Symfony/FOSUserBundle 기능을 사용하여이를 수행 할 수 있습니까?

+0

왜 코멘트없이이 질문에 대한 다운 vote를 얻었습니까? 분명히 그걸 보지 못했습니다 ... – user3440145

답변

0

이 나를 위해 작동합니다 : 대신 직접 이미지를로드 이미지를 검색 할 PHP 스크립트를 호출대로

하는 모든 것을 남겨주세요.

<img src="[server]/image.php?img=xy.jpg"> 

심포니에서 발생한 경로는 다음과 같습니다 그래서 난 단지 일반적으로이이며, 스크립트를 호출하고 GET-매개 변수로 IMG-이름을 전달하는 IMG 태그에서 "SRC"속성을 변경 추천 분명히 상이한 비트 : 요청 필요한 접근 권한을 처리 컨트롤러

<img src="[server]/my/img/loading/route/xy.jpg"> 

요청한 이미지 체크하고 응답을 준비한다 :

$response = new Response(); 
$response->setContent(file_get_contents($imgPath)); 
$response->setStatusCode(Response::HTTP_OK); 
$response->headers->set('Content-type', $mimeType); 
$response->headers->set('Content-length', filesize($imgPath)); 

Returnin g 각 컨트롤러 액션 메소드의 응답이 이제는 정상적으로 작동합니다.

0

ACL (액세스 제어 목록)이 필요합니다. 한 가지 해결책은 imageID 및 허용 된 userID가있는 테이블을 사용하여 주어진 이미지를 확인하고 해당 테이블/엔터티에서 허용 된 사용자에게 액세스하고 해당 사용자의 이미지 경로를 제공 할 수있게하는 것입니다. 또한 이미지, image_user사용자 엔티티에 올바른 관계를 사용해야합니다.

이 img-pathes에 대한 액세스를 (로그인 한) 사용자에게만 어떻게 제한하고 다른 모든 사용자에게는 거부합니까?

모든 사용자가 액세스 할 수있는 img 경로를 사용하지 않고 프런트 엔드 웹보기에 이미지를 제공하려면 어떻게해야합니까? 위의 두

, 컨트롤러에서 image_user에 로그인 한 사용자에 대해 허용 된 이미지를 확인하고 특정 사용자에 대한 이미지 경로를 얻을보기/twing로 전달 (당신이 사용할 수있는 이것에 대한 배열)

+0

고맙습니다. 나는 일반적인 액세스 제어에 문제가 없었습니다. 내 문제는 정말로 프런트 엔드 문제였습니다. 자세한 내용은 내 대답을 참조하십시오. 죄송합니다 질문이 명확하지 않은 경우. – user3440145

관련 문제