사용자가 보호 된 URL에 액세스하려고 시도하고 이 아니고이 인증/승인 된 경우 일부 코드를 실행해야하는 상황이 있습니다.URL/경로가 프로그래밍 방식으로 방화벽 뒤에 보호되는지 확인할 수 있습니까?
기본적으로 Symfony는 사용자를 로그인 양식으로 리디렉션하거나 전달하여 인증되지 않은 사용자를 처리합니다. 요청 메소드가 POST이고 대신 JSON 객체를 반향 시키면이 문제가 발생하지 않도록하고 싶습니다.
- 검사 :이 처리하는 생각할 수
가장 좋은 방법은
kernel.request
이벤트를 수신하고 두 가지를 확인하는 사용자 정의 리스너를 만드는 것입니다 사용자가 완전히 인 경우
POST 요청이고 사용자가 완전히 인증되지 않은 경우 JSON 개체를 반향시킵니다.
하지만 내 수신기는 모든 요청에 대해 (예상대로) 발사합니다. 요청이 방화벽으로 보호 된 URL에 대한 것인지 확인하는 것으로 제한하고 싶습니다. 이것을 프로그램으로 점검 할 수 있습니까?
나는 또한 이것에 대해 갈 수있는 간단한 방법이 잔소리 의심을 가지고 있지만, 사람이 어떤 조언이 있다면, 내가 그들 :)
편집을 듣고 싶어요, 그래서 그것을 알아낼 수 없습니다
@Problematic - 방화벽이있는 요청 만 확인하는 이유는 방화벽이 적용되지 않은 요청이 있고 코드가 실행되면 요청의 실제 응답 대신 앞서 언급 한 JSON 개체가 수신되기 때문입니다.
지금 로그인하지 않고 api/get/something
(방화벽 뒤에있는)에 POST 요청을하면 symfony는 로그인 페이지를 설명하는 HTML을 반환합니다. 대신, 나는 단지 {error: 'User is not authorized'}
과 같은 것을 반향시키고 싶습니다. 하지만 POST 요청에 대해서만이 작업을 수행하기를 원합니다.
방화벽 요청을 확인하는 이유는 무엇입니까? – Problematic
@Problematic, 내 편집을 참조하십시오 –