2014-01-08 2 views
0

다른 root.war 응용 프로그램이있는 서버에있는 grails 응용 프로그램에서 작업하고 있습니다. 현재 아파치 리다이렉션을 사용하여 이미 root.war를 가지고 있기 때문에 컨텍스트 경로 (grails 애플리케이션의 이름)를 숨기고 모든 URL에 표시하지 않습니다. 이는 공개 콘텐츠에 적용됩니다. 그러나 이제 스프링 보안 코어 플러그인으로 인증 된 컨텐츠를 추가 했으므로 컨텍스트 경로를 포함하도록 항상 리디렉션됩니다. 따라서 url /authcontent/page.gsp가 /appname/authcontent/page.gsp로 리디렉션됩니다. 일부 사람들은 Tomcat에 별도의 가상 호스트를 만들어 컨텍스트 경로를 제거 할 수 있다고 언급했지만 Spring Security가 필터 체인에서 리디렉션을 수행하는 데 사용하는 메커니즘을 재정의하는 방법이 있는지 궁금합니다. 아마도 RequestCacheAwareFilter를 대체할까요? 하지만 필터는 초기 인증 후에 만 ​​사용됩니다. 스프링 보안 문서를 읽었지만, 요청이 전체 인증 및 권한 부여 프로세스만큼 리다이렉트하는 것에 관해서는별로 이야기하지 않기 때문에 이것이 플러그인 자체에 있는지 궁금합니다. 어떤 생각이 도움이 될 것입니다.인증 된 콘텐츠를 볼 때 컨텍스트 경로를 제거하는 방법

답변

0

이렇게하는 방법은 다양합니다. 내가 시도한 두 가지는 requestCache bean을 오버라이드하는 것이었다 (그러나 역시 DefaultSavedRequest을 덮어 써야했다). 그리고 나는 더 단순한 것처럼 사용하고있는 redirectStategy bean을 덮어 썼다.

0

당신은 Config.groovy 파일 파일에 응용 프로그램 컨텍스트를 제거 할 수 있습니다

environments { 
    development { 
     grails.logging.jul.usebridge = true 
     grails.serverURL = "http://localhost:8080" 
     grails.app.context = "/" 
    } 
    production { 
     grails.logging.jul.usebridge = false 
     grails.serverURL = "http://yourwebsite.com" 
     grails.app.context = "/" 
    } 
} 

희망을.

+0

감사합니다. @adavis, 불행히도 제 생각에 grails.app.context는 grails run-app를 사용할 때만 사용됩니다. war 파일로 배치 할 때 컨텍스트 경로는 컨테이너에 의해 결정되므로이 특성은 사용되지 않습니다. –

+0

grails prod run-war로 테스트 해 보았습니다. 나는 적어도 그것을 시도 할 것이다. 감사! – brwngrldev

+0

감사합니다. 운이 없었던 첫 번째 시도 중 하나였습니다. –

관련 문제