2010-08-06 2 views
1

특정 페이지가 로그인으로 보호되는 웹 응용 프로그램을 만들고 있습니다. 나는이에 대한 글래스 피쉬의 JDBC 보안 영역을 생성, 나는 웹 사이트의 보안 영역에 사용자를 리디렉션 탐색 규칙을 사용하고JSF 포워딩 및 보안 제약 문제

(방법 described here 유사) 양식 인증을 사용하고 있습니다 :

<navigation-case> 
     <from-outcome>showResults</from-outcome> 
     <to-view-id>/SecureUser/Reservation/New/AvailableResults.xhtml</to-view-id> 
     <redirect/> 
</navigation-case> 
(etc...) 

잘 작동합니다. 그러나 탐색 케이스에서 리디렉션 태그를 건너 뛰면 페이지의 URL이 변경되지 않습니다. 이 경우 인증되지 않은 사용자가 보안 페이지에 액세스 할 수 있습니다.

이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 페이지가 전달되지 않고 리다이렉션되었는지 확인하는 것만으로 충분합니까? 사용자가 로그인했는지 여부를 확인하는 모든 보안 페이지에 코드를 작성해야합니까?

답변

0

페이지 간 탐색을 위해 POST를 사용하는 것은 좋지 않은 것으로 간주됩니다. 간단한 페이지 - 페이지 탐색에 JSF h:commandLink 또는 h:commandButton을 사용하지 마십시오. 둘 다 간단한 탐색을 위해 완전히 불필요하고 SEO 비우호적 인 POST 양식을 생성합니다. 대신 h:link 또는 h:button을 사용하십시오. 그것은 평범한 바닐라 GET 링크와 GET 형식을 각각 렌더링합니다.

어쨌든 POST 양식을 제출하고 결과 페이지가 양식 페이지와 다른 경우 PRG (Post-Redirect-Get) pattern을 사용하는 것이 좋습니다. 이 경우 <redirect/>을 사용할 수 있습니다.