2008-09-17 5 views
5

저는 해변에서 작은 웹 응용 프로그램을 만들고 있습니다. 로그인 구성 요소가 있고 사용자가 로그인하면 다음 구성 요소가 렌더링 될 때 쿠키를 보내려고합니다. 출력 할 헤더에 뭔가를 추가 할 수 있도록 응답을 처리하는 객체를 얻을 수있는 방법이 있습니까?리디렉션없이 Seaside 응답에 쿠키를 추가하려면 어떻게해야합니까?

WASession >> redirectWithCookies를 사용하지 않으려 고합니다. 쿠키를 설정하기 때문에 리다이렉트하는 것 같아서요.

다음 응답에서 나가는 쿠키를 추가하는 다른 방법이 있습니까?

답변

5

요청 처리의 작업/콜백 단계에서 쿠키를 추가하는 방법은 현재 기본적으로 제공되지 않습니다. 이것은 대부분 결함 일 수 있으며이 문제에 명시되어 있습니다. http://code.google.com/p/seaside/issues/detail?id=48

현재이 패치는 해변가 2.9에서 수정 될 예정이지만, 2.8로 다시 백 포트할지 여부는 알 수 없습니다.

새로 고침이 콜백을 다시 트리거하지 못하도록 작업 단계와 렌더링 단계 사이에 리디렉션이 이미 있음을 명심하십시오. 따라서 사물의 웅장한 구성에서이 경우 하나 이상의 리디렉션이 ' t 이므로이 좋지 않습니다.

아직 파고 들고 싶다면 WARENDContinuation >> handleRequest :를보세요. 여기서 콜백 처리가 시작되고 리디렉션 또는 렌더링 단계가 시작됩니다. 추가

편집 : 문제가 이제 해결되었습니다

당신이 제대로 언제든지 현재의 응답에 쿠키를 추가 할 수 있습니다 (최신 개발 코드). 현재 요청 컨텍스트에서 응답 개체에 액세스하고 쿠키를 추가하기 만하면됩니다.

self requestContext response addCookie: aCookie 

이는 응답이 처리되는 방식에 상당히 큰 변화를 필요에 따라 2.8 해변에 백 포트 될 가능성이 : 같은 예를 들어, 당신이 뭔가를 할 수 있습니다.

+0

코드에서 제어 흐름으로 리디렉션이 너무 걱정되지 않습니다. 감사, :) –

4

나는 이것에 깊이 훑어 봤고 대답은 '아니오'로 보인다. 특히, WARenderCanvas 또는 액세스 할 수있는 모든 것 (응답의 스트림은 보유하고 응답 자체는 보유하지 않음)을 보유하는 WAHtmlStreamDocument에 보관되는 WARENDINGContext에 보유 할 수있는 방법은 없습니다. 컨텍스트에 현재 응답에 대한 액세스를 제공하는 것이 합리적이라고 생각합니다. 헤더를 설정할 수는 있지만, 이미 방법이 있는지 물었습니다.

바닷가는 많은 리다이렉트를하고 있으며 사용자 경험에 많은 영향을주지 않는 것 같습니다. 어쩌면해야 할 일은 걱정스러운 것 같지 않고 흘러가는 흐름에 대해 걱정하는 것입니다. 이미있는 API :)

+0

한 구성 요소가 어떻게 요청을 처리하고 다른 구성 요소를 렌더링하는지 파악하려고했습니다. 리디렉션을 먼저하고 다른 구성 요소를 렌더링하면 코드 디자인에 추가 단계가 추가됩니다. 오 잘, 나는 아직도 배우고있다. 고마워, :) –

관련 문제